【发布时间】:2015-06-04 13:17:40
【问题描述】:
我正在尝试对 3D 数组进行排序,但收效甚微。我已经阅读了有关如何针对二维完成此操作的各种方法,但我似乎无法将其放大。
我有一个类似的数组:
[[[0, 25], [1, 20], [2, 80], [0, 0], [0, 0], [0, 0]],
[[0, 80], [0, 20], [1, 25], [1, 40], [2, 99], [0, 0]],
[[0, 99], [1, 40], [2, 80], [0, 0], [0, 0], [0, 0]]]
我希望它按第二个值的总和排序。 我用来订购的标准是第二个值的总和。 例如:
25+20+80 = 125
80+20+25+40+99 = 264
99+40+80 = 219
所以:
[[[0, 80], [0, 20], [1, 25], [1, 40], [2, 99], [0, 0]],
[[0, 99], [1, 40], [2, 80], [0, 0], [0, 0], [0, 0]]],
[[0, 25], [1, 20], [2, 80], [0, 0], [0, 0], [0, 0]]]
谁能帮帮我?
【问题讨论】:
-
第二个值是什么?每个列表?
-
您指定的第二个数组似乎没有以任何方式排序。如果是,请解释对第二个数组进行了什么样的精确排序?
-
您不能按原样对多维数据进行排序。您需要映射到一维并定义排序标准。比如向量(2,3)和(3,1)没有排序关系,但是如果你把它映射到范数(一维),那么你就可以通过某种方式排序。
-
你可以这样做:sorted(array[::-1], key=lambda x: x[2])