Bagaimana cara mengubah daftar daftar sederhana menjadi array numpy? Barisnya adalah masing-masing sublists dan setiap baris berisi elemen dalam sublist.
183
Jika daftar daftar Anda berisi daftar dengan jumlah elemen yang bervariasi maka jawaban Ignacio Vazquez-Abrams tidak akan berfungsi. Sebaliknya ada setidaknya 3 opsi:
1) Buat array array:
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) Buat susunan daftar:
x=[[1,2],[1,2,3],[1]]
y=numpy.array(x)
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'list'>
3) Pertama, buat daftar panjangnya sama:
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
berfungsi juga, itu akan dikonversiNone
kenp.nan
, yang mungkin berguna.sumber
Karena ini adalah pencarian teratas di Google untuk mengubah daftar daftar menjadi array Numpy, saya akan menawarkan yang berikut meskipun pertanyaannya adalah 4 tahun:
Ketika saya pertama kali berpikir untuk melakukannya dengan cara ini, saya cukup senang dengan diri saya sendiri karena sangat sederhana. Namun, setelah menghitungnya dengan daftar daftar yang lebih besar, sebenarnya lebih cepat untuk melakukan ini:
Perhatikan bahwa jawaban Bastiaan # 1 tidak membuat daftar terus menerus tunggal, maka saya menambahkan
concatenate
.Ngomong-ngomong ... Saya lebih suka
hstack
pendekatan untuk itu penggunaan elegan Numpy.sumber
Sesederhana:
sumber
Sekali lagi, setelah mencari masalah mengkonversi daftar bersarang dengan level N menjadi array N-dimensi, saya tidak menemukan apa-apa, jadi inilah cara saya mengatasinya:
sumber
[...[...[...]]]
bagian itu. Anda hanya perlu meneleponnp.array
, denganndmin=number-of-list-layers
. (meskipun dalam kasus saya, saya perlundmin=number-of-list-layers-minus-1
untuk beberapa alasan, yang lain membuat lapisan tambahan - perlu diselidiki)np.array
hanya "membungkus" daftar-daftar terdalam daripada mengubahnya menjadi array numpy.Saya memiliki daftar daftar dengan panjang yang sama. Bahkan
Ignacio Vazquez-Abrams
jawaban itu tidak berhasil untuk saya. Saya mendapat array numpy 1-D yang elemennya adalah daftar. Jika Anda menghadapi masalah yang sama, Anda dapat menggunakan metode di bawah iniMenggunakan
numpy.vstack
sumber
Cukup gunakan panda
ini hanya berfungsi untuk daftar daftar
jika Anda memiliki daftar daftar, Anda mungkin ingin mencoba sesuatu di sepanjang baris
sumber