我想迭代兩個二維數組。但是,迭代器以某種方式跳過了行中的每個替代元素。 'bimg'和'dist'size是20x12。但是,對於每一行,它遍歷0,2,4 ...列,而不是0,1,2,3,4,......Python numpy nditer跳過替代元素
代碼片段:
it = np.nditer([bimg, dist],
op_flags=[['readonly'],['readonly']],
flags = ['multi_index', 'multi_index'])
rows, cols = bimg.shape
print "bimg dimensions: ", bimg.shape
print "dist dimensions: ", dist.shape
for cur_b, cur_d in it:
print "MULTI_IDX = ", it.multi_index
輸出:
bimg dimensions: (20L, 12L)
dist dimensions: (20L, 12L)
MULTI_IDX = (0, 0)
MULTI_IDX = (0, 2)
MULTI_IDX = (0, 4)
MULTI_IDX = (0, 6)
MULTI_IDX = (0, 8)
MULTI_IDX = (0, 10)
MULTI_IDX = (1, 0)
MULTI_IDX = (1, 2)
要理解這個問題,如果我在Python提示符創建數組,並嘗試迭代它正常工作:
正常工作代碼:
x = np.array(np.arange(240))
x = x.reshape(20,12)
y = np.array(np.arange(240))
y = y + 100
y = y.reshape(20,12)
it = np.nditer([x,y],
op_flags = [['readonly'],['readonly']],
flags= ['multi_index', 'multi_index'])
for a, b in it:
print it.multi_index
輸出:
MULTI_INDEX = (0, 0)
MULTI_INDEX = (0, 1)
MULTI_INDEX = (0, 2)
MULTI_INDEX = (0, 3)
MULTI_INDEX = (0, 4)
MULTI_INDEX = (0, 5)
感謝您指出'雖然沒有完成'。事實上,我早些時候使用它,但隨後將其更改爲'for',但忘記刪除it.iternext()。所以,這會導致迭代跳躍。 – Tanmay