Страницы

Поиск по вопросам

пятница, 14 июня 2019 г.

Способ получить координаты всех элементов массива без FOR

Есть массив 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)

Комментариев нет:

Отправить комментарий