我在单个 nxm 数组中有 5 个 numpy 数组,每个数组包含一组随机值。我需要的是根据它们递减的累积总和来打印它们。例如,我的 nXm 数组如下所示:
v = [[1,2,3,4], [2,3,4,5], [11,21,3,4], [4,33,21,1], [2,4,6,5]]
我需要它的顺序是:累积和最高的那个排在第一位。我尝试根据 argmax 打印它们,但它潜入单个数组的所有元素并按降序对它们进行排序..
有办法吗?
假设通过累积和您的意思是总计(有一个累积和函数返回其他内容),那么您可以使用标准排序来执行此操作:
>>> v = [[1,2,3,4], [2,3,4,5], [11,21,3,4], [4,33,21,1], [2,4,6,5]]
>>> sorted(v, key=sum, reverse=True)
[[4, 33, 21, 1], [11, 21, 3, 4], [2, 4, 6, 5], [2, 3, 4, 5], [1, 2, 3, 4]]
并在 numpy 中使用argsort
:
>>> a = np.array(v)
>>> a.sum(axis=1)
array([10, 14, 39, 59, 17])
>>> a.sum(axis=1).argsort()
array([0, 1, 4, 2, 3])
>>> a[a.sum(axis=1).argsort()[::-1]]
array([[ 4, 33, 21, 1],
[11, 21, 3, 4],
[ 2, 4, 6, 5],
[ 2, 3, 4, 5],
[ 1, 2, 3, 4]])
但我可能误会你了。