Как установить глубину итерации при объединении массива numpy, например, с nditer? - PullRequest
0 голосов
/ 10 июня 2018

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 и т. Д.определить глубину итерации?

1 Ответ

0 голосов
/ 10 июня 2018

Если я правильно понял ваш вопрос, вы можете просто использовать простой вложенный цикл

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...