0
有喜欢的数组:最快的方式在3D阵列搜索在numpy的
array([
[[X1, Y1, 80, 13, 14],
[17, 54, 47, 67, 45],
[11, 21, 67, 45, 11],
[15, 75, 17, 69, 12]],
[[X2, Y2, 94, 51, 10],
[64, 81, 90, 80, 67],
[78, 73, 19, 6, 57],
[46, 18, 83, 26, 56]],
...
[[Xn, Yn, 32, 3, 82],
[47, 69, 63, 20, 10],
[16, 48, 7, 96, 11],
[95, 30, 45, 65, 42]] ])
的目标是按每个X和Y的然后每组检查的条件。 做到这一点,我写代码:
x=npy.random.randint(100,size=(5,4,5))
array([[[36, 47, 80, 13, 14],
[17, 54, 47, 67, 45],
[11, 21, 67, 45, 11],
[15, 75, 17, 69, 12]],
[[50, 17, 94, 51, 10],
[64, 81, 90, 80, 67],
[78, 73, 19, 6, 57],
[46, 18, 83, 26, 56]],
[[37, 98, 32, 3, 82],
[47, 69, 63, 20, 10],
[16, 48, 7, 96, 11],
[95, 30, 45, 65, 42]],
[[59, 36, 38, 95, 3],
[67, 62, 61, 64, 15],
[49, 45, 24, 85, 24],
[23, 89, 23, 63, 14]],
[[49, 26, 70, 83, 99],
[16, 94, 78, 43, 33],
[95, 4, 39, 91, 56],
[94, 26, 71, 32, 55]]])
for i in range(x.shape[1]):
for j in range(x.shape[2]):
npy.any(x[0:3,i,j]>80)
False
True
True
False
True
False
True
True
False
False
False
False
False
True
False
True
False
True
False
False
,但因为我工作的阵列,是非常大的这种方式效率不高给我。 有没有更好的写法?是否有可能删除for循环?什么是最快的方式呢?
这就是工作,THX。什么剂量轴做? –
@pdshah执行减少查找沿该轴的任何匹配。更多信息 - ['ufuncs docs'](https://docs.scipy.org/doc/numpy/reference/ufuncs.html)。 – Divakar