Saya memiliki array numpy yang berisi:
[1, 2, 3]
Saya ingin membuat array yang berisi:
[1, 2, 3, 1]
Artinya, saya ingin menambahkan elemen pertama ke akhir larik.
Saya telah mencoba yang jelas:
np.concatenate((a, a[0]))
Tapi saya mendapatkan kesalahan mengatakan ValueError: arrays must have same number of dimensions
Saya tidak mengerti ini - array keduanya hanya array 1d.
np.insert([1,2,3], 3, 1)
Jawaban:
append()
membuat array baru yang bisa menjadi array lama dengan elemen yang ditambahkan.Saya pikir lebih normal untuk menggunakan metode yang tepat untuk menambahkan elemen:
sumber
a
larik. Namun, ini mengembalikan larik baru yang dimodifikasi. Jadi, kalau perlua
modifikasi makaa = numpy.append(a,a[0])
harus dipakai.np.append
penggunaannp.concatenate
. Itu hanya memastikan addon memiliki satu dimensi. Kesalahan OP adalaha[0]
memiliki 0 dimensi.a.append(1)
,a.add(1)
atau bahkan sesuatu yang analog dengan daftar sepertia + [1]
Saat menambahkan hanya sekali atau sekali setiap saat, menggunakan
np.append
di array Anda seharusnya baik-baik saja. Kekurangan dari pendekatan ini adalah memori dialokasikan untuk array yang benar-benar baru setiap kali dipanggil. Saat menumbuhkan array untuk sejumlah besar sampel, akan lebih baik untuk mengalokasikan array sebelumnya (jika ukuran total diketahui) atau menambahkan ke daftar dan mengonversi ke array sesudahnya.Menggunakan
np.append
:Menggunakan daftar python untuk mengonversi ke array sesudahnya:
Array numpy pra-alokasi:
Ketika ukuran akhir alokasi awal yang tidak diketahui sulit dilakukan, saya mencoba mengalokasikan awal dalam potongan 50 tetapi tidak mendekati menggunakan daftar.
sumber
a[0]
bukanlah sebuah larik, ini adalah elemen pertama daria
dan oleh karena itu tidak memiliki dimensi.Coba gunakan
a[0:1]
sebagai gantinya, yang akan mengembalikan elemen pertamaa
di dalam larik item tunggal.sumber
Coba ini:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html
concatenate membutuhkan kedua elemen untuk menjadi array numpy; namun, [0] bukanlah larik. Itulah mengapa tidak berhasil.
sumber
np.concatenate((a, [a[0]]))
. Daftar tersebut akan dipromosikan menjadi tipe array secara otomatis, menghemat beberapa pengetikan.Perintah ini,
tidak mengubah
a
array. Namun, ini mengembalikan larik baru yang dimodifikasi. Jadi, jikaa
modifikasi diperlukan, maka yang berikut ini harus digunakan.sumber
sumber
Ini mungkin sedikit berlebihan, tetapi saya selalu menggunakan
np.take
fungsi ini untuk pengindeksan menyeluruh:sumber
Katakanlah
a=[1,2,3]
dan Anda menginginkannya[1,2,3,1]
.Anda dapat menggunakan fungsi append bawaan
Di sini 1 adalah sebuah int, itu mungkin sebuah string dan itu mungkin atau mungkin bukan milik elemen dalam array. Cetakan:
[1,2,3,1]
sumber
Jika Anda ingin menambahkan elemen, gunakan
append()
a = numpy.append(a, 1)
dalam hal ini tambahkan 1 di akhir larikJika Anda ingin memasukkan sebuah elemen gunakan
insert()
a = numpy.insert(a, index, 1)
dalam hal ini Anda dapat meletakkan 1 di tempat yang Anda inginkan, menggunakan indeks untuk mengatur posisi dalam array.sumber