![](/img/trans.png)
[英]Efficient way of finding the minimum/maximum row index for each column in a numpy.array with nonzero value?
[英]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.