我在一个 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]])
但是我可能误解了你的意思。
关于python - 根据每个子数组的累积和对 NXM Numpy 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14555771/