python - 将 numpy 数组与例如交互时如何设置迭代深度下一个?

标签 python numpy opencv

假设我有以下数组,表示 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 等等。

有没有我可以定义迭代深度的 numpy 方法?

最佳答案

如果我正确理解你的问题,你可以只使用一个简单的嵌套循环

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]

或者,以更 numpythonic 的方式使用 np.ndindex

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]

关于python - 将 numpy 数组与例如交互时如何设置迭代深度下一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50784144/

相关文章:

python - 在 Python 中更改数组索引

python - Pandas :用列表分隔行的记录

python - 如何在python中删除图像的背景

java - 是否有可以从 Hudson/Jenkins 获取工件的 Ant 任务?

python - 将项目 append 到列表列表中的指定列表(Python)

python - NumPy - 实现阈值上限的更快方法

c++ - 通过它的质心提取对象

math - 平面中的变形点

python - 基于索引组对数据框中的行求和的大多数 pythonic 方法

python - 使用分层列连接两个 DataFrame