Menggunakan array Python standar, saya bisa melakukan hal berikut:
arr = []
arr.append([1,2,3])
arr.append([4,5,6])
# arr is now [[1,2,3],[4,5,6]]
Namun, saya tidak bisa melakukan hal yang sama di numpy. Sebagai contoh:
arr = np.array([])
arr = np.append(arr, np.array([1,2,3]))
arr = np.append(arr, np.array([4,5,6]))
# arr is now [1,2,3,4,5,6]
Saya juga melihat ke dalam vstack
, tetapi ketika saya gunakan vstack
pada array kosong, saya mendapatkan:
ValueError: all the input array dimensions except for the concatenation axis must match exactly
Jadi bagaimana cara menambahkan baris baru ke array kosong di numpy?
Jawaban:
Cara untuk "memulai" array yang Anda inginkan adalah:
Yang merupakan array kosong tetapi memiliki dimensi yang tepat.
Maka pastikan untuk menambahkan sepanjang sumbu 0:
Tapi, @jonrsharpe benar. Bahkan, jika Anda akan menambahkan dalam satu lingkaran, itu akan jauh lebih cepat untuk menambahkan ke daftar seperti pada contoh pertama Anda, kemudian konversikan ke array numpy pada akhirnya, karena Anda benar-benar tidak menggunakan numpy sebagai dimaksudkan selama loop:
Cara numpythonic untuk melakukannya tergantung pada aplikasi Anda, tetapi itu akan lebih seperti:
sumber
a = a[:N]
Meskipun saya sangat percaya Anda harus menemukan cara untuk membuat vektor itu (memposting pertanyaan baru dengan spesifik Anda jika Anda memerlukan bantuan) atau hanya menggunakan daftar sampai loop selesai.Ini solusinya:
sumber
Dalam hal ini Anda mungkin ingin menggunakan fungsi np.hstack dan np.vstack
Anda juga dapat menggunakan fungsi np.concatenate.
Bersulang
sumber
menggunakan definisi tipe kustom, yang berhasil bagi saya adalah:
sumber
Dalam hal menambahkan baris baru untuk array dalam loop, Tetapkan array secara langsung untuk firsttime dalam loop daripada menginisialisasi array kosong.
Ini terutama berguna ketika bentuk array tidak diketahui
sumber
Saya ingin melakukan for for, namun dengan metode askewchan itu tidak berfungsi dengan baik, jadi saya telah memodifikasinya.
sumber