我试图将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代码中没有看到任何问题。