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