在8 * 720阵列的每列中找到最小值?

时间:2016-10-31 01:09:44

标签: python python-2.7 sorting numpy

我有一个名为meanRSS 8 * 720的数组,我希望看到每列中的最小值,并从该列的其他元素中减去该值。我想为每一栏做这件事。

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]])

但我希望它按列而不是行排序。

2 个答案:

答案 0 :(得分:2)

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

arr - arr.min(axis = 0)

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

答案 1 :(得分:0)

您还可以尝试移调矩阵,从列中的所有较大值中减去最小值并转置回来。例如

>>> 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]]