1

我在单个 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 打印它们,但它潜入单个数组的所有元素并按降序对它们进行排序..

有办法吗?

4

1 回答 1

3

假设通过累积和您的意思是总计(有一个累积和函数返回其他内容),那么您可以使用标准排序来执行此操作:

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

但我可能误会你了。

于 2013-01-28T05:17:33.833 回答