Python Numpy Nditer跳过替代元素

坦美

我正在尝试迭代两个2D数组。但是,迭代器会以某种方式跳过行中的每个备用元素。'bimg'和'dist'大小为20x12。但是,对于每一行,它遍历0、2、4 ...列而不是0、1、2、3、4,...

程式码片段:

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)
hpaulj

我看不出有什么区别。当我定义时:

bimg = x
dist = y

两个片段的迭代次数相同。

flags只需要一次“ multi_index”。它适用于整个迭代,适用于op_flags每个数组:

flags= ['multi_index']

尽管文档描述nditerefficient multi-dimensional iterator object,但Python代码的速度似乎并没有太大帮助。在C或Cython中简化了遍历多个数组的整个过程。

这是生成的另一种方法multi_index其实没什么不同。在内部ndindex构造所需形状的虚拟数组,并返回可迭代的。看一下它的代码。

for i, j in np.ndindex(bimg.shape):
     print i,j

根据教程Iterating over Array页面,正确的使用方法multi_index是使用c样式迭代器:

while not it.finished:
    print it.multi_index
    it.iternext()

我不知道为什么。是什么dtypesbimgdist

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在数组中每行应用argsort,基于阈值跳过某些元素-NumPy / Python

来自分类Dev

python numpy ndarray元素均值

来自分类Dev

Python numpy,跳过列并读取csv文件

来自分类Dev

使用numpy.nditer()

来自分类Dev

Python:numpy.matrix.resize移动元素

来自分类Dev

使用numpy元素调用对象属性-Python

来自分类Dev

在Python / Numpy中优化数组元素移位

来自分类Dev

在 Python 中对 numpy 数组的元素求和

来自分类Dev

在numpy数组python中的每个元素之后添加元素

来自分类Dev

numpy数组而不是python列表-使用nditer从两个1d数组创建2d数组

来自分类常见问题

在Python中计算numpy ndarray中非NaN元素的数量

来自分类Dev

在python中使用join()合并numpy数组元素

来自分类Dev

numpy追加到python列表的两个元素

来自分类Dev

Python:优化删除在numpy数组中未对齐的元素

来自分类Dev

为什么单个Numpy数组元素不是Python标量?

来自分类Dev

Python Numpy错误:ValueError:使用序列设置数组元素

来自分类Dev

Python / Numpy-计算相等数组元素的总和

来自分类Dev

Python:如何为numpy数组的元素建立索引?

来自分类Dev

Python / Numpy:按通用元素对数组行进行分组

来自分类Dev

在Python / NumPy中,如何通过复制元素填充数组?

来自分类Dev

以numpy / Python样式访问OpenCV和C ++中的矩阵元素

来自分类Dev

Python:优化删除在numpy数组中未对齐的元素

来自分类Dev

Python Numpy ValueError:使用序列设置数组元素

来自分类Dev

Python:如何为numpy数组的元素建立索引?

来自分类Dev

ValueError:使用序列 python,numpy 设置数组元素

来自分类Dev

Python 3:从 numpy 数组中选择随机对元素而不重复

来自分类Dev

Python-如何跳过特定的JSON元素?

来自分类Dev

使用Selenium Python时跳过TR元素

来自分类Dev

如何向numpy数组添加常量,但跳过Python中的第一行

Related 相关文章

  1. 1

    在数组中每行应用argsort,基于阈值跳过某些元素-NumPy / Python

  2. 2

    python numpy ndarray元素均值

  3. 3

    Python numpy,跳过列并读取csv文件

  4. 4

    使用numpy.nditer()

  5. 5

    Python:numpy.matrix.resize移动元素

  6. 6

    使用numpy元素调用对象属性-Python

  7. 7

    在Python / Numpy中优化数组元素移位

  8. 8

    在 Python 中对 numpy 数组的元素求和

  9. 9

    在numpy数组python中的每个元素之后添加元素

  10. 10

    numpy数组而不是python列表-使用nditer从两个1d数组创建2d数组

  11. 11

    在Python中计算numpy ndarray中非NaN元素的数量

  12. 12

    在python中使用join()合并numpy数组元素

  13. 13

    numpy追加到python列表的两个元素

  14. 14

    Python:优化删除在numpy数组中未对齐的元素

  15. 15

    为什么单个Numpy数组元素不是Python标量?

  16. 16

    Python Numpy错误:ValueError:使用序列设置数组元素

  17. 17

    Python / Numpy-计算相等数组元素的总和

  18. 18

    Python:如何为numpy数组的元素建立索引?

  19. 19

    Python / Numpy:按通用元素对数组行进行分组

  20. 20

    在Python / NumPy中,如何通过复制元素填充数组?

  21. 21

    以numpy / Python样式访问OpenCV和C ++中的矩阵元素

  22. 22

    Python:优化删除在numpy数组中未对齐的元素

  23. 23

    Python Numpy ValueError:使用序列设置数组元素

  24. 24

    Python:如何为numpy数组的元素建立索引?

  25. 25

    ValueError:使用序列 python,numpy 设置数组元素

  26. 26

    Python 3:从 numpy 数组中选择随机对元素而不重复

  27. 27

    Python-如何跳过特定的JSON元素?

  28. 28

    使用Selenium Python时跳过TR元素

  29. 29

    如何向numpy数组添加常量,但跳过Python中的第一行

热门标签

归档