Jak przekonwertować prostą listę list na tablicę numpy? Wiersze są pojedynczymi listami podrzędnymi, a każdy wiersz zawiera elementy na liście podrzędnej.
183
Jeśli twoja lista list zawiera listy z różną liczbą elementów, odpowiedź Ignacio Vazquez-Abramsa nie zadziała. Zamiast tego istnieją co najmniej 3 opcje:
1) Stwórz tablicę 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) Utwórz 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 wyrównaj długość list:
x=[[1,2],[1,2,3],[1]]
length = max(map(len, x))
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)
dtype=float
też działa, zostanie przekonwertowaneNone
nanp.nan
, co może być przydatne.źródło
Ponieważ jest to najczęściej wyszukiwane w Google narzędzie do konwersji listy list do tablicy Numpy, zaoferuję następujące informacje, mimo że pytanie ma 4 lata:
Kiedy po raz pierwszy pomyślałem o zrobieniu tego w ten sposób, byłem całkiem zadowolony z siebie, ponieważ jest to takie proste. Jednak po zsynchronizowaniu go z większą listą, jest to w rzeczywistości szybsze:
Zauważ, że odpowiedź nr 1 Bastiaana nr 1 nie tworzy żadnej ciągłej listy, dlatego dodałem
concatenate
.W każdym razie ... Wolę
hstack
podejście ze względu na eleganckie użycie Numpy.źródło
To tak proste, jak:
źródło
Znów, po wyszukaniu problemu konwersji zagnieżdżonych list z poziomami N w tablicę N-wymiarową nic nie znalazłem, więc oto moja droga:
źródło
[...[...[...]]]
części. Musisz tylko zadzwonićnp.array
, zndmin=number-of-list-layers
. (chociaż w moim przypadku potrzebowałemndmin=number-of-list-layers-minus-1
z jakiegoś powodu, inaczej stworzyłem dodatkową warstwę - trzeba to zbadać)np.array
po prostu „zawinięcie” tych najgłębszych list, a nie przekształcenie ich w tablice liczbowe.Miałem listę równych długości. Nawet wtedy
Ignacio Vazquez-Abrams
odpowiedź mi nie wyszła. Mam tablicę liczb 1-D, której elementami są listy. Jeśli napotkałeś ten sam problem, możesz użyć poniższej metodyPosługiwać się
numpy.vstack
źródło
Po prostu użyj pand
działa to tylko w przypadku listy list
jeśli masz listę list, możesz spróbować czegoś podobnego do
źródło