Заполнение двумерного массива Numpy на основе заданных координат - PullRequest
3 голосов
/ 26 октября 2019

Я хочу заполнить двумерный массив Numpy, созданный следующим образом:

import numpy as np

arr = np.full((10,10),0)

Пример координат:

enter image description here

Как можноЯ заполняю эти выбранные элементы данными, даже если координаты переключаются с 2,1:2,5 на 2,5:2,1 или с 5,1:8,1 на 8,1:5,1

Если я хочу заполнить данные на 2,1 : 2,5, 2,1 2,2 2,3 2,4 2,5будет заполнено. Также как 5,1 : 5,8

1 Ответ

1 голос
/ 26 октября 2019

Вот один из способов сделать это:

import numpy as np

coords = ['2,1:2,5', '8,6:4,6', '5,1:8,1']
arr = np.full((10, 10), 0)

for coord in coords:
    start, stop = map(lambda x: x.split(','), coord.split(':'))
    (x0, y0), (x1, y1) = sorted([start, stop])
    arr[int(y0):int(y1)+1, int(x0):int(x1)+1] = 1

В результате arr будет выглядеть так:

array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 0, 1, 1, 1, 1, 0],
       [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 1, 1, 1, 1, 1, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...