создать шаблонную матрицу - PullRequest
       8

создать шаблонную матрицу

2 голосов
/ 29 сентября 2011

Можно ли сгенерировать пустую матрицу с круговой диаграммой «1» в матрице покоя «0»?Так что в основном

generate(ysize, xsize, ycenter, xcenter, radius)

должно выглядеть примерно так:

[000000000]
[000000000]
[000001000]
[000011100]
[000111110]
[000011100]
[000001000]
[000000000]

(хорошо, это выглядит глупо, но в масштабе 1000x1000 это имело бы смысл)

Есть ли такойВозможность в NumPy?

Ответы [ 2 ]

6 голосов
/ 29 сентября 2011
def generate(ysize, xsize, ycenter, xcenter, radius):
    x = np.arange(xsize)[None,:]
    y = np.arange(ysize)[:,None]
    return ((xcenter - x) ** 2 + (ycenter - y) ** 2 <= radius ** 2) * 1


generate(10,8,4,3,2)


array([[0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0, 0],
       [0, 1, 1, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0, 0],
       [0, 0, 0, 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]])
5 голосов
/ 30 сентября 2011

Немного более кратко, чем ответ @ eumiro, но по сути то же самое.

import numpy

def generate(ysize, xsize, ycenter, xcenter, radius):
    x, y = numpy.mgrid[0:ysize,0:xsize]
    return ((x - ycenter)**2 + (y - xcenter)**2 <= radius**2) * 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...