繁体   English   中英

在8 * 720数组的每一列中找到最小值?

[英]Finding a minimum value in each column of 8*720 array?

我有一个名为8 * 720的meanRSS数组,我想查看每列中的最小值并将该值从该列的其他元素中减去。 我想对每一列都这样做。

meanRSS.shape =(8,720)

minInds = meanRSS.argsort()

此后,我不知道如何进行。 我是python的新手。

Out[13]: 
array([[5, 2, 1],
   [6, 4, 3],
   [1, 6, 8],
   [8, 5, 4]])
In [14]: minInds = a.argsort()
In [15]: minInds
Out[15]: 
array([[2, 1, 0],
   [2, 1, 0],
   [0, 1, 2],
   [2, 1, 0]])

但是我希望它沿着列而不是行进行排序。

您可以在axis = 0数组上使用min()方法找出列最小值的向量,然后从原始数组中减去它:

arr - arr.min(axis = 0)

#array([[4, 0, 0],
#       [5, 2, 2],
#       [0, 4, 7],
#       [7, 3, 3]])

您还可以尝试进行诸如转置矩阵,从列中所有较大的值中减去最小val以及向后转置之类的操作。 例如

>>> transpose = lambda matrix: list(map(list, zip(*matrix)))
>>> col_min_min = lambda col: [(val-min(col) if val !=min(col) else val) for val in col]
>>>
>>> a = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
>>> result = transpose([col_min_min(col) for col in transpose(a)])
>>> print result
[[1, 2, 3], [1, 1, 1], [2, 2, 2]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM