在numpy数组上迭代

有没有比这更详细的替代方案:

xrange(array.shape[0])中x的

:
对于x范围内的y(array.shape[1]):
做些什么(x,y)

我想到了这个:

itertools.product(map(xrange,array.shape))中x,y的

:
做些什么(x,y)

这节省了一个缩进,但仍然很难看

我希望得到类似于以下伪代码的东西:

数组中x,y的

。索引:
做些什么(x,y)

有这样的事吗

我想你是在找利率

&gt&燃气轮机&燃气轮机;a=numpy.array([[1,2],[3,4],[5,6])
&燃气轮机&燃气轮机&燃气轮机;对于(x,y),单位为numpy.ndenumerate(a)的值:
...  打印x,y
... 
0 0
0 1
1 0
1 1
2 0
2 1

关于表现。它比列表理解慢一点

X=np.零((100100100))
%时间列表([((i,j,k),X[i,j,k]),用于范围内的i(X.shape[0]),用于范围内的j(X.shape[1]),用于范围内的k(X.shape[2]))
1个循环,最佳3:376毫秒/循环
%时间列表(np.ndenumerate(X))
1个回路,最佳3个:每个回路570毫秒

如果您担心性能问题,您可以通过查看ndenumerate的实现进一步优化性能,该实现有两个功能:转换为数组和循环。如果知道自己有一个数组,可以调用平面迭代器的.coords属性

a=X.flat
%timeit列表([(a.coords,x)表示a.flat中的x])
1个回路,最好为3:305 ms/回路

发表评论