Korzystając ze standardowych tablic Pythona, mogę wykonać następujące czynności:
arr = []
arr.append([1,2,3])
arr.append([4,5,6])
# arr is now [[1,2,3],[4,5,6]]
Jednak nie mogę zrobić tego samego w odrętwieniu. Na przykład:
arr = np.array([])
arr = np.append(arr, np.array([1,2,3]))
arr = np.append(arr, np.array([4,5,6]))
# arr is now [1,2,3,4,5,6]
Zajrzałem też vstack
, ale kiedy używam vstack
na pustej tablicy, otrzymuję:
ValueError: all the input array dimensions except for the concatenation axis must match exactly
Jak więc dołączyć nowy wiersz do pustej tablicy w numpy?
Odpowiedzi:
Sposobem na „uruchomienie” tablicy, którą chcesz, jest:
Która jest pustą tablicą, ale ma odpowiednią wymiarowość.
Następnie pamiętaj, aby dołączyć wzdłuż osi 0:
Ale @jonrsharpe ma rację. W rzeczywistości, jeśli zamierzasz dołączać w pętli, byłoby znacznie szybciej dołączyć do listy, jak w pierwszym przykładzie, a następnie przekonwertować na tablicę numpy na końcu, ponieważ tak naprawdę nie używasz numpy jako przeznaczone podczas pętli:
Sposób numpythonic, aby to zrobić, zależy od aplikacji, ale byłby bardziej podobny do:
źródło
a = a[:N]
Chociaż mocno wierzę, że powinieneś znaleźć sposób na wektoryzację tego (opublikuj nowe pytanie ze swoimi szczegółami, jeśli potrzebujesz pomocy) lub po prostu używaj list, aż pętla się skończy.Oto moje rozwiązanie:
źródło
W takim przypadku możesz chcieć użyć funkcji np.hstack i np.vstack
Możesz również użyć funkcji np.concatenate.
Twoje zdrowie
źródło
używając niestandardowej definicji typu, zadziałało:
źródło
W przypadku dodawania nowych wierszy dla tablicy w pętli, przypisz tablicę bezpośrednio po raz pierwszy w pętli zamiast inicjowania pustej tablicy.
Jest to przydatne głównie wtedy, gdy kształt tablicy jest nieznany
źródło
Chcę zrobić pętlę for, ale z metodą askewchan nie działa dobrze, więc ją zmodyfikowałem.
źródło