Saya tidak tahu bagaimana cara menggunakan array atau matriks dengan cara yang biasanya saya gunakan daftar. Saya ingin membuat array kosong (atau matriks) dan kemudian menambahkan satu kolom (atau baris) padanya sekaligus.
Saat ini satu-satunya cara saya dapat menemukan untuk melakukan ini adalah seperti:
mat = None
for col in columns:
if mat is None:
mat = col
else:
mat = hstack((mat, col))
Sedangkan jika itu daftar, saya akan melakukan sesuatu seperti ini:
list = []
for item in data:
list.append(item)
Apakah ada cara untuk menggunakan notasi semacam itu untuk array atau matriks NumPy ?
.empty()
berarti seseorang dapat menemukan nilai acak dalam sel, tetapi array dibuat lebih cepat daripada misalnya dengan.zeros()
?Array NumPy adalah struktur data yang sangat berbeda dari daftar dan dirancang untuk digunakan dengan cara yang berbeda. Penggunaan Anda
hstack
berpotensi sangat tidak efisien ... setiap kali Anda menyebutnya, semua data dalam array yang ada disalin ke yang baru. (append
Fungsi akan memiliki masalah yang sama.) Jika Anda ingin membangun kolom matriks satu per satu, Anda mungkin lebih baik menyimpannya dalam daftar sampai selesai, dan hanya kemudian mengubahnya menjadi sebuah array.misalnya
item
bisa berupa daftar, array, atau apa saja yang dapat diubah, asalkan masing-masingitem
memiliki jumlah elemen yang sama.Dalam kasus khusus ini (
data
adalah beberapa iterable memegang kolom matriks) Anda cukup menggunakan(Perhatikan juga bahwa menggunakan
list
sebagai nama variabel mungkin bukan praktik yang baik karena menutupi tipe bawaan dengan nama itu, yang dapat menyebabkan bug.)EDIT:
Jika karena alasan tertentu Anda benar-benar ingin membuat array kosong, Anda bisa menggunakannya
numpy.array([])
, tetapi ini jarang berguna!sumber
np.concatenate()
), Anda dapat menggunakan:np.empty((0, some_width))
. 0, jadi array pertama Anda tidak akan menjadi sampah.Untuk membuat array multidimensi kosong di NumPy (mis. Array 2D
m*n
untuk menyimpan matriks Anda), jika Anda tidak tahum
berapa banyak baris yang akan Anda tambahkan dan tidak peduli tentang biaya komputasi yang disebutkan oleh Stephen Simmons (yaitu membangun kembali Array pada setiap append), Anda dapat menekan untuk 0 dimensi yang Anda ingin menambahkan ke:X = np.empty(shape=[0, n])
.Dengan cara ini Anda dapat menggunakan misalnya (di sini
m = 5
kami menganggap kami tidak tahu saat membuat matriks kosong, dann = 2
):yang akan memberi Anda:
sumber
Saya sering melihat ini karena saya perlu menggunakan numpy.array sebagai set di salah satu proyek sekolah saya dan saya perlu diinisialisasi kosong ... Saya tidak menemukan jawaban yang relevan di sini di Stack Overflow, jadi saya mulai mencoret-coret sesuatu.
Hasilnya adalah:
Oleh karena itu Anda dapat langsung menginisialisasi array np sebagai berikut:
Saya harap ini membantu.
sumber
a=np.array([])
tampaknya default kefloat64
Anda dapat menggunakan fungsi append. Untuk baris:
Untuk kolom:
EDIT
Tentu saja, seperti yang disebutkan dalam jawaban lain, kecuali jika Anda sedang melakukan pemrosesan (mis. Inversi) pada matriks / array SETIAP kali Anda menambahkan sesuatu ke dalamnya, saya hanya akan membuat daftar, menambahkannya kemudian mengubahnya menjadi Himpunan.
sumber
Jika Anda benar-benar tidak tahu ukuran akhir array, Anda dapat menambah ukuran array seperti ini:
0
di baris pertama.numpy.append
adalah pilihan lain. Itu panggilannumpy.concatenate
.sumber
Anda dapat menerapkannya untuk membangun segala jenis array, seperti nol:
sumber
a= [0] * 5
adalah solusi sederhanaBerikut adalah beberapa solusi untuk membuat numpys lebih mirip Daftar
OUTPUT: array ([2., 24.])
sumber
Bergantung pada apa Anda menggunakan ini untuk, Anda mungkin perlu menentukan tipe data (lihat 'dtype' ).
Misalnya, untuk membuat array 2D nilai 8-bit (cocok untuk digunakan sebagai gambar monokrom):
Untuk gambar RGB, sertakan jumlah saluran warna dalam bentuk:
shape=(H,W,3)
Anda mungkin juga ingin mempertimbangkan nol-inisialisasi dengan
numpy.zeros
daripada menggunakannumpy.empty
. Lihat catatan di sini .sumber
Saya pikir Anda ingin menangani sebagian besar pekerjaan dengan daftar lalu gunakan hasilnya sebagai matriks. Mungkin ini caranya;
sumber
Saya pikir Anda dapat membuat array numpy kosong seperti:
Format ini berguna ketika Anda ingin menambahkan array numpy di loop.
sumber
Untuk membuat array NumPy kosong tanpa mendefinisikan bentuknya ada caranya:
1.
lebih disukai. karena Anda tahu Anda akan menggunakan ini sebagai numpy.
2.
NumPy mengonversinya menjadi tipe np.ndarray sesudahnya, tanpa tambahan
[]
dimionsion
.sumber
Mungkin yang Anda cari adalah sesuatu seperti ini:
Dengan cara ini Anda bisa membuat array tanpa elemen apa pun. Mirip dengan:
Dengan cara ini Anda dapat menambahkan elemen baru ke array Anda terlebih dahulu.
sumber