【发布时间】:2018-07-21 07:44:58
【问题描述】:
我正在尝试迭代两个 numpy 矩阵,一个大小为 nx3,另一个大小为 nx1
我正在尝试让 nditer 同时迭代它们的行。
如果我们有:
y = np.array([ [ 1],
[-1],
[ 1] ])
x = np.array([[ 1.3432504 , -1.3311479 , 1. ],
[ 1.8205529 , -0.6346681 , 1. ],
[ 0.98632067, -1.8885762 , 1. ]])
我试试:
for (a,b) in iterator:
print(a)
print(b)
这应该给
[1]
[ 1.3432504 , -1.3311479 , 1. ]
[-1]
[ 1.8205529 , -0.6346681 , 1. ]
[1]
[ 0.98632067, -1.8885762 , 1. ]
我尝试了带有“external_loop flag”的 np.nditer,我得到了 x 的所需输出,但是当我一次只想要一个时,它强制 y 分成 3 个元素。
提前谢谢你。
【问题讨论】:
-
什么是
iterator?nditer使用起来并不容易,并且在 Python 代码中使用时不会提供任何性能价值。您需要一直阅读教程页面到cython示例。 -
查看
apply_along_axis的代码。它使用ndindex生成索引,然后使用这些索引遍历除一个轴之外的所有数组。看看ndindex。它使用nditer和multi_index。我不知道另一个使用 Python API 到nditer的numpy函数。
标签: python numpy matrix iterator