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 № 1Jeś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)