Rozważmy następujący prosty przykład:Jak przypisać tablicę 1D numpy do tablicy 2D numpy?
X = numpy.zeros([10, 4]) # 2D array
x = numpy.arange(0,10) # 1D array
X[:,0] = x # WORKS
X[:,0:1] = x # returns ERROR:
# ValueError: could not broadcast input array from shape (10) into shape (10,1)
X[:,0:1] = (x.reshape(-1, 1)) # WORKS
Może ktoś wyjaśnić dlaczego numpy ma wektory kształtu (N) niż (n, 1)? Jaki jest najlepszy sposób wykonania rzutowania z tablicy 1D na tablicę 2D?
Dlaczego tego potrzebuję? Ponieważ mam kod, który wstawia wynik x
do tablicy 2D X
, a rozmiar x zmienia się od czasu do czasu, więc mam X[:, idx1:idx2] = x
, który działa, jeśli x
jest również 2D, ale nie, jeśli x to 1D.
Czy mógłbyś dodać więcej komentarzy? Nie jest dla mnie jasne, w jaki sposób dotarłeś tutaj z oryginalnego kodu i dlaczego to rozwiązuje problem. – brandones