Numpy向量化和非向量化代码结果不匹配3d数组



我试图将numpy 3d数组的过程代码重构为它的矢量化等效,结果不匹配。

import numpy as np 

arr = np.empty((16,73,144))
boolArray = np.zeros((14,73,144)) 
for k in range(0,16): 
for j in range(0,73): 
for i in range(0,144): 
if (k == 0):
doSomething():
else if (k == 15):
doSomething():
else:
if (arr[k+1,j,i] == arr[k-1,j,i]): 
boolArray[k,j,i] = True

向量化的对应物-

# isArrEqual is a boolean array of identical shape to boolArray 
isArrEqual = (arr[2:,:,:] == arr[0:-2,:,:])

在我的实际数据中,我得到了过程代码的6000个真条目,而在向量化的对应项中根本没有真条目。

我哪里错了?

您的过程代码可能有错误。我认为应该是

for k in range(1, 15):  # changed 14 to 15 
for j in range(0,73): 
for i in range(0,144): 
if (arr[k+1,j,i] == arr[k-1,j,i]): 
boolArray[k-1,j,i] = True  # changed k to k-1

我在numpy代码中没有看到任何问题。

最新更新