supose我有以下数组,表示rgb图像的结构:
[[[ 0, 1, 2], [ 3, 4, 5]]
[[ 6, 7, 8], [ 9, 10, 11]]
[[12, 13, 14], [15, 16, 17]]]
如何迭代像素,例如[0,1,2]然后[3,4,5],并收到相应的指数? 使用numpys nditer函数,我无法定义它应该停止的深度/轴,因此它将迭代每个值,例如, 0然后1然后2依旧等等。
我可以定义迭代深度吗?
答案 0 :(得分:4)
如果我理解你的问题你可以使用一个简单的嵌套循环
A = np.array([[[ 0, 1, 2], [ 3, 4, 5]],
[[ 6, 7, 8], [ 9, 10, 11]],
[[12, 13, 14], [15, 16, 17]]])
for i in range(A.shape[0]):
for j in range(A.shape[1]):
print(i, j, A[i,j,...])
0 0 [0 1 2]
0 1 [3 4 5]
1 0 [6 7 8]
1 1 [ 9 10 11]
2 0 [12 13 14]
2 1 [15 16 17]
或者,使用np.ndindex
更多 numpythonic 方式
for i in np.ndindex(A.shape[:2]):
print(i, A[i])
(0, 0) [0 1 2]
(0, 1) [3 4 5]
(1, 0) [6 7 8]
(1, 1) [ 9 10 11]
(2, 0) [12 13 14]
(2, 1) [15 16 17]