在8*720数组的每列中求一个最小值?

2024-10-04 09:24:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在平均形状=(8720)

最小值=意思是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]])

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


Tags: in元素排序数组outarray形状新手
2条回答

您也可以尝试类似于转置矩阵的方法,从列中所有较大的值中减去最小值,然后再换位。例如

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

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

arr - arr.min(axis = 0)

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

相关问题 更多 >