Ketika saya mencoba
numpy.newaxis
hasilnya memberi saya bingkai plot 2-d dengan sumbu x dari 0 hingga 1. Namun, ketika saya mencoba menggunakan numpy.newaxis
untuk mengiris vektor,
vector[0:4,]
[ 0.04965172 0.04979645 0.04994022 0.05008303]
vector[:, np.newaxis][0:4,]
[[ 0.04965172]
[ 0.04979645]
[ 0.04994022]
[ 0.05008303]]
Apakah itu hal yang sama kecuali bahwa itu mengubah vektor baris ke vektor kolom?
Secara umum, apa gunanya numpy.newaxis
, dan dalam keadaan apa kita harus menggunakannya?
python
numpy
multidimensional-array
array-broadcasting
numpy-ndarray
Yue Harriet Huang
sumber
sumber
except that it changes a row vector to a column vector?
Contoh pertama bukan vektor baris. Itu konsep matlab. Dalam python itu hanya vektor 1 dimensi tanpa konsep baris atau kolom. Vektor baris atau kolom adalah 2-dimensonal, seperti contoh keduaJawaban:
Sederhananya,
numpy.newaxis
digunakan untuk meningkatkan dimensi array yang ada dengan satu dimensi lagi , bila digunakan sekali . Jadi,1D array akan menjadi array 2D
Array 2D akan menjadi array 3D
Array 3D akan menjadi array 4D
Array 4D akan menjadi array 5D
dan seterusnya..
Berikut ini adalah ilustrasi visual yang menggambarkan promosi array 1D ke array 2D.
Skenario-1 :
np.newaxis
mungkin berguna ketika Anda ingin secara eksplisit mengubah array 1D menjadi vektor baris atau vektor kolom , seperti yang digambarkan dalam gambar di atas.Contoh:
Skenario-2 : Ketika kita ingin menggunakan siaran numpy sebagai bagian dari beberapa operasi, misalnya saat melakukan penambahan beberapa array.
Contoh:
Katakanlah Anda ingin menambahkan dua array berikut:
Jika Anda mencoba menambahkan ini begitu saja, NumPy akan meningkatkan yang berikut
ValueError
:Dalam situasi ini, Anda dapat menggunakan
np.newaxis
untuk meningkatkan dimensi salah satu array sehingga NumPy dapat disiarkan .Sekarang, tambahkan:
Atau, Anda juga dapat menambahkan sumbu baru ke array
x2
:Sekarang, tambahkan:
Catatan : Amati bahwa kita mendapatkan hasil yang sama dalam kedua kasus (tetapi yang satu adalah transpose yang lain).
Skenario-3 : Ini mirip dengan skenario-1. Namun, Anda dapat menggunakan
np.newaxis
lebih dari satu kali untuk mempromosikan array ke dimensi yang lebih tinggi. Operasi semacam itu kadang-kadang diperlukan untuk array orde tinggi ( yaitu Tensor ).Contoh:
Lebih banyak latar belakang di np.newaxis vs np.reshape
newaxis
juga disebut sebagai pseudo-index yang memungkinkan penambahan sementara sumbu ke multiarray.np.newaxis
menggunakan operator slicing untuk membuat ulang array sementaranp.reshape
membentuk kembali array ke tata letak yang diinginkan (dengan asumsi bahwa dimensi cocok; Dan ini harus dilakukanreshape
agar terjadi).Contoh
Dalam contoh di atas, kami memasukkan sumbu sementara antara sumbu pertama dan kedua
B
(untuk menggunakan siaran). Sumbu yang hilang diisi di sini menggunakannp.newaxis
untuk membuat operasi penyiaran berfungsi.Kiat Umum : Anda juga dapat menggunakan
None
di tempatnp.newaxis
; Ini sebenarnya benda yang sama .PS Juga lihat jawaban yang bagus ini: newaxis vs membentuk kembali untuk menambah dimensi
sumber
Apa
np.newaxis
?Ini
np.newaxis
hanyalah alias untuk konstanta PythonNone
, yang berarti bahwa di mana pun Anda menggunakannp.newaxis
Anda juga bisa menggunakanNone
:Itu hanya lebih deskriptif jika Anda membaca kode yang menggunakan
np.newaxis
bukanNone
.Cara menggunakan
np.newaxis
?The
np.newaxis
umumnya digunakan dengan mengiris. Ini menunjukkan bahwa Anda ingin menambahkan dimensi tambahan ke array. Posisinp.newaxis
mewakili tempat saya ingin menambahkan dimensi.Dalam contoh pertama saya menggunakan semua elemen dari dimensi pertama dan menambahkan dimensi kedua:
Contoh kedua menambahkan dimensi sebagai dimensi pertama dan kemudian menggunakan semua elemen dari dimensi pertama array asli sebagai elemen dalam dimensi kedua dari array hasil:
Demikian pula Anda dapat menggunakan beberapa
np.newaxis
untuk menambahkan beberapa dimensi:Apakah ada alternatif lain
np.newaxis
?Ada fungsi lain yang sangat mirip di NumPy:,
np.expand_dims
yang juga dapat digunakan untuk memasukkan satu dimensi:Tetapi mengingat itu hanya menyisipkan
1
dishape
Anda juga bisareshape
array untuk menambahkan dimensi ini:Sebagian besar waktu
np.newaxis
adalah cara termudah untuk menambah dimensi, tetapi ada baiknya mengetahui alternatifnya.Kapan harus menggunakan
np.newaxis
?Dalam beberapa konteks menambahkan dimensi berguna:
Jika data harus memiliki jumlah dimensi yang ditentukan. Misalnya jika Anda ingin menggunakan
matplotlib.pyplot.imshow
untuk menampilkan array 1D.Jika Anda ingin NumPy menyiarkan array. Dengan menambahkan dimensi Anda bisa misalnya mendapatkan perbedaan antara semua elemen satu array:
a - a[:, np.newaxis]
. Ini berfungsi karena operasi NumPy disiarkan mulai dengan dimensi terakhir 1 .Untuk menambahkan dimensi yang diperlukan sehingga NumPy dapat menyiarkan array. Ini berfungsi karena setiap dimensi panjang-1 hanya disiarkan ke panjang 1 dimensi yang sesuai dari array lainnya.
1 Jika Anda ingin membaca lebih lanjut tentang aturan penyiaran, dokumentasi NumPy tentang hal itu sangat bagus. Ini juga termasuk contoh dengan
np.newaxis
:sumber
Anda mulai dengan daftar angka satu dimensi. Setelah kamu digunakan
numpy.newaxis
, Anda mengubahnya menjadi matriks dua dimensi, yang terdiri dari empat baris masing-masing kolom.Anda kemudian dapat menggunakan matriks itu untuk perkalian matriks, atau melibatkannya dalam pembangunan matriks 4 xn yang lebih besar.
sumber
newaxis
objek dalam tuple seleksi berfungsi untuk memperluas dimensi dari seleksi yang dihasilkan oleh satu unit-panjang dimensi .Ini bukan hanya konversi matriks baris ke matriks kolom.
Perhatikan contoh di bawah ini:
Sekarang mari tambahkan dimensi baru ke data kami,
Anda bisa melihatnya
newaxis
menambahkan dimensi ekstra di sini, x1 memiliki dimensi (3,3) dan X1_new memiliki dimensi (3,1,3).Bagaimana dimensi baru kami memungkinkan kami melakukan operasi yang berbeda:
Menambahkan x1_new dan x2, kita mendapatkan:
Dengan demikian,
newaxis
bukan hanya konversi dari baris ke kolom matriks. Ini meningkatkan dimensi matriks, sehingga memungkinkan kami untuk melakukan lebih banyak operasi di atasnya.sumber
ndarray
terminologi NumPy.