/ / Створення масиву розмірів X за Y з (a, b) точок в Python 2.7 - python, масиви, numpy

Створення масиву розмірів X на Y за розміром (a, b) в Python 2.7 - python, масиви, numpy

Я декілька годин дивно бив головою проти цієї проблеми, і буду вдячний за будь-яку допомогу!

Я хотів би створити (наприклад) масив 100x100, у якому кожен індекс є a (x,y) координувати. Загальна мета тут така:

У мене координати x, y і я хотів би розташувати їх у двовимірному просторі, щоб я міг використовувати np.diagonal функція для повернення (x,y) координати по лінії. Тоді я буду використовувати ці (x,y) бали для порівняння конкретних значень.

Перший крок тут - власне створення масиву, і я просто не можу це зробити.

Відповіді:

1 для відповіді № 1

Якщо ви просто хочете значення по діагоналі, чому ви просто не створюєте 1D список?

import numpy as np
xs = np.linspace(1,10,100) # assuming x goes form 1 to 10
ys = np.linspace(2,3, 100) # assuming y goes from 2 to 3
xy = zip(xs, ys)

Вам більше не потрібен 2d масив, а потім дзвоніть по діагоналі.


1 для відповіді № 2

Робота над пропозицією Хайме:

>>> x, y = numpy.mgrid[0:100, 0:100]
>>> z = numpy.array([x, y]).transpose([1,2,0])
>>> z[50, 2]
array([50,  2])

EDIT: З огляду на масив точок p, форми (2, P), саме так ви дізнаєтеся, яка з цих точок знаходиться під діагоналлю n:

>>> d = numpy.diagonal(z, n)
>>> cond0 = p[0, None] < d[0, :, None]
>>> cond1 = p[1, None] < d[1, :, None]
>>> good_indices_full = numpy.where(numpy.logical_and(cond0, cond1))
>>> good_indices = good_indices_full[1]

(Я вважаю за краще працювати з "good_indices", тобто писати такі речі, як p [:, good_indices], а не повний набір масивів, який numpy.where повертає назад).


0 для відповіді № 3

Я не впевнений в нумерованій частині вашого запиту, але ви можете створити масив так:

coords = [[(y,x) for x in range(100)] for y in range(100)]
>>> coords[50][2]
(50,2)