【发布时间】:2016-02-25 23:22:35
【问题描述】:
我正在尝试遍历两个二维数组。但是,迭代器以某种方式跳过了行中的每个备用元素。 “bimg”和“dist”大小为 20x12。但是,对于每一行,它会迭代 0、2、4 ... 列而不是 0、1、2、3、4、...
代码 sn-p:
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)
【问题讨论】:
标签: arrays python-2.7 numpy iterator