Есть массив arr с данными (по сути дела они не важны).
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
Необходимо получить список координат центра каждого элемента массива. Предполагается что длина каждой ячейка равна 1. То есть нужно получить следующее:
(0.5, 0.5)
(0.5, 1.5)
(0.5, 2.5)
(1.5, 0.5)
(1.5, 1.5)
(1.5, 2.5)
(2.5, 0.5)
(2.5, 1.5)
(2.5, 2.5)
Делаю так:
for row in range(arr.shape[0]):
for col in range(arr.shape[1]):
print (row + 0.5, col + 0.5)
Собственно вопрос. Как избавиться от вложенных for друг в друга? Чую - наверняка есть какой-нибудь простой метод из Numpy
Ответ
Без for можно сделать вот так:
import numpy as np
arr = np.arange(3 * 3).reshape(3, 3)
grid = np.mgrid[:arr.shape[0], :arr.shape[1]] + 0.5
print(grid.reshape(2, -1).T)
Комментариев нет:
Отправить комментарий