【发布时间】:2015-07-23 09:13:18
【问题描述】:
假设你有一个 3D 数组:
arr = np.zeros((9,9,9))
a[2:7,2:7,2:7] = np.random.randint(5, size=(5,5,5))
如何对这个数组中所有出现的值进行排序(而不是像 np.sort 这样的轴)并显示这些值的所有索引?
输出应该是这样的:
0 at [0,0,0], [0,1,0], [0,2,1], ...etc.
1 at [5,5,5], [5,7,6], ...etc
2 at [4,5,5], ...etc
3 at ...etc
and so on
【问题讨论】:
-
您自己尝试过什么吗?什么有效,什么无效?
-
我尝试循环遍历所有元素,将它们的值和索引放入一个列表并按值对该列表进行排序。虽然这不是很有效(我的数据集大约有 300x300x300 数组)所以我认为它不值得一提。
-
defaultdict 效率到底够不够?
-
不是真的,我会用 np.unravel_index 试试 Eelco 的方法,看看能不能绕过分组……
标签: python arrays sorting numpy