【发布时间】:2017-07-23 16:47:48
【问题描述】:
我有一个非常大的 400x300x60x27 数组(我们称之为“A”)。我取了最大值,现在是一个名为“B”的 400x300x60 数组。基本上我需要找到'B'中每个值的'A'中的索引。我已经将它们都转换为列表并设置了一个 for 循环来查找索引,但是因为有超过 700 万个值,所以需要很长时间才能完成它。这就是我所拥有的:
B=np.zeros((400,300,60))
C=np.zeros((400*300*60))
B=np.amax(A,axis=3)
A=np.ravel(A)
A=A.tolist()
B=np.ravel(B)
B=B.tolist()
for i in range(0,400*300*60):
C[i]=A.index(B[i])
有没有更有效的方法来做到这一点?它需要几个小时和几个小时,程序仍然停留在最后一行。
【问题讨论】:
-
你想在整个 4D 数组中找到一个值,还是从它来自的 27 个元素中找到它?您需要每个元素一次点击还是所有点击?您有可以分享的用例吗?还是保密的?
-
你在小型阵列上测试过吗?那些您可以实际看到正在发生的事情并尝试替代方法的地方?你看过
argmax吗? -
(我不能再编辑前一个了,但感觉就像是 400x300x60 体积上的 3x3x3 张量场,但这只是盲目猜测 - 但如果是这种情况,你可能会在每个体素的基础上寻找一些梯度/方向,然后你当然不想在整个数组中搜索,也许
numpy.argmax就是你要找的)
标签: python arrays numpy indexing