Jak przekonwertować prostą listę list na tablicę numpy? Wiersze są pojedynczymi podlistami, a każdy wiersz zawiera elementy na liście podrzędnej.Lista list w tablicy numpy
Odpowiedz
>>> numpy.array([[1, 2], [3, 4]])
array([[1, 2], [3, 4]])
Jest to tak proste, jak:
>>> lists = [[1, 2], [3, 4]]
>>> np.array(lists)
array([[1, 2],
[3, 4]])
Jeśli lista list ma list z różnej liczby elementów niż odpowiedzi Ignacio Vazquez-Abrams nie będzie działać. Zamiast tego są 3 opcje:
1) dokonać tablicy tablic:
x=[[1,2],[1,2,3],[1]]
y=numpy.array([numpy.array(xi) for xi in x])
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'numpy.ndarray'>
2) Sprawdź tablicę list:
x=[[1,2],[1,2,3],[1]]
y=numpy.array(x)
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'list'>
3) Najpierw należy wykazy równej długości:
x=[[1,2],[1,2,3],[1]]
length = len(sorted(x,key=len, reverse=True)[0])
y=numpy.array([xi+[None]*(length-len(xi)) for xi in x])
y
>>>array([[1, 2, None],
>>> [1, 2, 3],
>>> [1, None, None]], dtype=object)
Dzięki, przyszedłeś tu po to. Używałem numpy przez pewien czas i stwierdziłem, że to zachowanie nie jest trywialne. Dziękuję za poświęcenie czasu na wyjaśnienie tego bardziej ogólnego przypadku. –
Kciuki w górę za tę odpowiedź! – alisa
Ponieważ jest to najlepsze wyszukiwanie w Google do konwersji listy list do tablicy Numpy, będę oferować następujące pomimo kwestii będącej 4 lat:
>>> x = [[1, 2], [1, 2, 3], [1]]
>>> y = numpy.hstack(x)
>>> print(y)
[1 2 1 2 3 1]
Kiedy pierwsza myśl to zrobić w ten sposób, byłem dość zadowolony z siebie, bo to baaaardzo proste. Jednak po taktowania go z większej listy list, to jest rzeczywiście szybciej to zrobić:
>>> y = numpy.concatenate([numpy.array(i) for i in x])
>>> print(y)
[1 2 1 2 3 1]
Zauważ, że @ Bastiaan za Odpowiedź # 1 nie robi jedną listę ciągły, a więc dodałem concatenate
.
W każdym razie ... Preferuję podejście hstack
dla eleganckiego korzystania z Numpy.
Ponownie, po wyszukaniu problemu konwersja zagnieżdżonych list z poziomu N do tablicy n-wymiarowej nic nie znalazłem, więc oto mój sposób wokół niego:
import numpy as np
new_array=np.array([[[coord for coord in xk] for xk in xj] for xj in xi], ndmin=3) #this case for N=3
- 1. Lista list kontra słownik
- 2. Lista list różnych typów
- 3. Collections.shuffle (lista list)
- 4. Lista list wyszukiwania i podzbiorów list
- 5. numpy funkcja ustawić elementy tablicy do wartości danej lista indeksów
- 6. Dopasowanie warunkowe tablicy Numpy
- 7. Dlaczego NumPy zamiast list Pythona?
- 8. Wymuś numpy, aby lista była przechowywana.
- 9. Python - lista list do zapisu list w kolumnach
- 10. Cython/numpy Typ tablicy
- 11. lista R list do data.frame
- 12. python .count dla tablic wielowymiarowych (lista list)
- 13. program Pythona do eksportowania numpy/list w formacie svmlight
- 14. Zmiana kształtu tablicy w NumPy
- 15. Liczba wierszy w tablicy numpy
- 16. indeks elementu tablicy w numpy
- 17. Zawijanie tablicy numpy w pytonie
- 18. Konwertowanie zagnieżdżonych list danych na wielowymiarowe tablice Numpy
- 19. Nowa lista linii do tablicy
- 20. Bullet list i ponumerowana lista w UITextView
- 21. evalution porównania tablicy numpy
- 22. wielkość NumPy tablicy
- 23. indeksy okrągłych numpy tablicy
- 24. Konwersja listę numpy tablicy
- 25. Python numpy tablicy zastępując
- 26. scipy interpolację numpy tablicy
- 27. Indeksuj środek tablicy numpy?
- 28. Iteracja nad numpy tablicy
- 29. Prepend element tablicy numpy
- 30. Generowanie n-wymiarowej tablicy współrzędnych w numpy
REPL oznacza wycinanie na pytania początkujących odczuwalnie . –
to automatycznie konwertuje listę list w tablicy 2D, ponieważ długość wszystkich zawartych list jest taka sama. Czy wiesz, jak tego nie robić: zrobić tablicę z listą, nawet jeśli wszystkie listy mają tę samą długość? Czy możliwa jest konwersja tablicy 2D w macierze 1D z tablicą 1D (efektywnie mam na myśli, bez iteracyjnej metody lub rzeczy z mapy Pythona) –
Jeśli to nie działa, ponieważ twoje podlisty nie mają nawet rozmiarów, zobacz [ następujące odpowiedzi] (http://stackoverflow.com/a/26224619/1449460). –