我有一个名为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]])
但我希望它按列而不是行排序。
答案 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]]