Mam tablicę numpy zawierającą:
[1, 2, 3]
Chcę utworzyć tablicę zawierającą:
[1, 2, 3, 1]
Oznacza to, że chcę dodać pierwszy element na końcu tablicy.
Spróbowałem oczywistego:
np.concatenate((a, a[0]))
Ale pojawia się błąd mówiąc ValueError: arrays must have same number of dimensions
Nie rozumiem tego - tablice są tylko tablicami 1d.
np.insert([1,2,3], 3, 1)
Odpowiedzi:
append()
tworzy nową tablicę, która może być starą tablicą z dołączonym elementem.Myślę, że bardziej normalne jest użycie właściwej metody dodawania elementu:
źródło
a
tablicy. Jednak zwraca nową zmodyfikowaną tablicę. Tak więc, jeślia
wymagana jest modyfikacja,a = numpy.append(a,a[0])
należy ją zastosować.np.append
używanp.concatenate
. Po prostu zapewnia, że dodatek ma jeden wymiar. Błąd OP toa[0]
ma 0 wymiarów.a.append(1)
,a.add(1)
lub nawet coś analogicznego do list, takich jaka + [1]
Podczas dołączania tylko raz lub raz od czasu do czasu użycie
np.append
na tablicy powinno być w porządku. Wadą tego podejścia jest to, że przy każdym wywołaniu pamięć jest przydzielana dla zupełnie nowej tablicy. Podczas powiększania tablicy dla znacznej liczby próbek lepiej byłoby albo wstępnie przydzielić tablicę (jeśli znany jest całkowity rozmiar), albo dołączyć do listy, a następnie przekonwertować ją na tablicę.Używając
np.append
:Użycie listy Pythona konwertującej później na tablicę:
Wstępna alokacja tablicy numpy:
Kiedy ostateczny rozmiar jest nieznany, wstępne przydzielanie jest trudne, próbowałem wstępnie alokować w kawałkach po 50, ale nie zbliżyło się to do użycia listy.
źródło
a[0]
nie jest tablicą, jest pierwszym elementema
i dlatego nie ma wymiarów.Spróbuj użyć
a[0:1]
zamiast tego, co zwróci pierwszy elementa
wewnątrz tablicy pojedynczego elementu.źródło
Spróbuj tego:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html
concatenate wymaga, aby oba elementy były tablicami numpy; jednak [0] nie jest tablicą. Dlatego to nie działa.
źródło
np.concatenate((a, [a[0]]))
. Lista i tak zostanie automatycznie podwyższona do typu tablicowego, oszczędzając ci trochę pisania.To polecenie,
nie zmienia
a
tablicy. Jednak zwraca nową zmodyfikowaną tablicę. Jeśli więca
wymagana jest modyfikacja, należy użyć następujących elementów.źródło
źródło
Może to być trochę przesada, ale zawsze używam tej
np.take
funkcji do dowolnego indeksowania zawijanego:źródło
Powiedzmy
a=[1,2,3]
i chcesz, żeby tak było[1,2,3,1]
.Możesz użyć wbudowanej funkcji dołączania
Tutaj 1 to int, może to być ciąg znaków i może, ale nie musi, należeć do elementów tablicy. Wydruki:
[1,2,3,1]
źródło
Jeśli chcesz dodać element, użyj
append()
a = numpy.append(a, 1)
w tym przypadku dodaj 1 na końcu tablicyJeśli chcesz wstawić element, użyj
insert()
a = numpy.insert(a, index, 1)
w tym przypadku możesz umieścić 1 tam, gdzie chcesz, używając indeksu do ustawienia pozycji w tablicy.źródło