/ / Tworzenie tablicy wymiarów X na Y punktów (a, b) w Pythonie 2.7 - python, tablice, numpy

Tworzenie tablicy wymiarowej X na Y punktów (a, b) w Pythonie 2.7 - python, tablice, numpy

Dziwnie waliłem głową w ten problem od kilku godzin i byłbym wdzięczny za wszelką pomoc!

Chciałbym utworzyć (na przykład) tablicę 100 x 100, w której każdy indeks to (x,y) koordynować. Ogólny cel tutaj jest następujący:

Mam współrzędne x, y i chciałbym ustawić je w przestrzeni 2D, aby móc użyć np.diagonal funkcja, aby zwrócić (x,y) współrzędne wzdłuż linii. Potem ich użyję (x,y) punkty do porównania poszczególnych wartości.

Pierwszym krokiem tutaj jest stworzenie tablicy i po prostu nie mogę tego zrobić.

Odpowiedzi:

1 dla odpowiedzi № 1

Jeśli chcesz tylko wartości wzdłuż przekątnej, dlaczego nie utworzysz listy 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)

Nie potrzebujesz już tablicy 2d, a następnie wywołujesz przekątną.


1 dla odpowiedzi nr 2

Praca nad sugestią Jaime'a:

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

EDYCJA: Biorąc pod uwagę tablicę punktów p kształtu (2, P), w ten sposób dowiesz się, które z tych punktów znajdują się pod przekątną 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]

(Wolę pracować z „good_indices”, tj. Piszę rzeczy takie jak p [:, good_indices], niż pełną krotkę tablic, którą zwraca numpy.where).


0 dla odpowiedzi № 3

Nie jestem pewien części numpy twojego żądania, ale możesz utworzyć tablicę w następujący sposób:

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