Menyusun tabel data dari vektor-vektor terpisah adalah pekerjaan sehari-hari: tinggi badan tersimpan di satu array, berat badan di array lain, dan kita ingin menjadikan masing-masing vektor satu kolom pada tabel dua dimensi. np.column_stack dirancang untuk kebutuhan ini. Pada fungsi tersebut, setiap array satu dimensi diperlakukan sebagai kolom, bukan baris.
Satu nama lagi yang mungkin kita temukan di kode lama adalah row_stack. Alias ini bersejarah: perilakunya identik dengan np.vstack, tetapi sejak NumPy 2.0 pemanggilannya memunculkan DeprecationWarning. Bab ini membahas keduanya sekaligus perbandingannya dengan np.vstack.
column_stack: Mengubah Vektor Menjadi Kolom #
np.column_stack menerima list array dan menjadikan setiap vektor satu dimensi sebagai satu kolom pada hasil dua dimensi. Panjang vektor menentukan jumlah baris hasil, sedangkan banyaknya vektor menentukan jumlah kolom.
import numpy as np
tinggi = np.array([165, 170, 158])
berat = np.array([60, 72, 55])
data = np.column_stack([tinggi, berat])
print(data)
print(data.shape)Output yang Dihasilkan:
[[165 60]
[170 72]
[158 55]]
(3, 2)Mari kita bedah mekanismenya:
- Baris 3-4 (
np.array(...)): dua vektor 1-D masing-masing berukuran(3,)dibuat; panjang keduanya harus sama karena akan menjadi baris yang sejajar. - Baris 5 (
np.column_stack([...])): NumPy mengangkat tiap vektor menjadi vektor kolom berbentuk(3, 1), lalu menyambungkan hasil-hasil itu searahaxis=1; bentuk akhirnya(3, 2). - Baris 6-7 (
print(...)): baris pertama berisi pasangan data orang pertama, yaitu tinggi 165 dan berat 60; urutan vektor pada list menentukan urutan kolom.
vstack vs column_stack pada Input yang Sama #
Perbedaan kedua fungsi paling jelas ketika keduanya diberi vektor-vektor yang sama: np.vstack menjadikan vektor sebagai baris, np.column_stack menjadikannya kolom.
import numpy as np
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
print(np.vstack([x, y]))
print(np.vstack([x, y]).shape)
print(np.column_stack([x, y]))
print(np.column_stack([x, y]).shape)Output yang Dihasilkan:
[[1 2 3]
[4 5 6]]
(2, 3)
[[1 4]
[2 5]
[3 6]]
(3, 2)| Fungsi | Vektor 1-D diperlakukan sebagai | Hasil pada (3,) + (3,) |
|---|---|---|
np.vstack | baris | (2, 3) |
np.column_stack | kolom | (3, 2) |
Menyisipkan Vektor sebagai Kolom Baru #
Karena array dua dimensi dibiarkan bentuknya, np.column_stack menjadi cara ringkas untuk menambahkan satu kolom hasil hitungan ke matriks yang sudah ada.
import numpy as np
matriks = np.array([[1, 2],
[3, 4]])
vektor = np.array([5, 6])
gab = np.column_stack([matriks, vektor])
print(gab)
print(gab.shape)Output yang Dihasilkan:
[[1 2 5]
[3 4 6]]
(2, 3)Yang perlu dicermati dari pemanggilan di atas:
matriks: array 2-D masuk apa adanya tanpa diangkat atau diubah.vektor: vektor(2,)diangkat menjadi kolom(2, 1)agar sejajar dengan dua barismatriks.- Hasil
(2, 3): kolom vektor menempel di sisi paling kanan; panjang vektor wajib sama dengan jumlah barismatriks.
row_stack: Alias Deprecated #
np.row_stack dahulu hanyalah nama lain dari np.vstack. Sejak NumPy 2.0, alias ini ditandai deprecated: pada NumPy 2.1.3 nama tersebut masih terdaftar dan masih bisa dipanggil, tetapi setiap pemanggilan memunculkan DeprecationWarning yang menyarankan penggunaan np.vstack.
import numpy as np
import warnings
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
print(hasattr(np, "row_stack"))
with warnings.catch_warnings(record=True) as terekam:
warnings.simplefilter("always")
hasil = np.row_stack([x, y])
print(hasil)
print(hasil.shape)
print(terekam[0].category.__name__)
print(str(terekam[0].message))Output yang Dihasilkan:
True
[[1 2 3]
[4 5 6]]
(2, 3)
DeprecationWarning
`row_stack` alias is deprecated. Use `np.vstack` directly.Penjelasan baris demi baris:
- Baris 6 (
hasattr(np, "row_stack")): memeriksa apakah atributrow_stackmasih terdaftar pada modulnp; hasilnyaTruepada NumPy 2.1.3 karena alias belum dihapus. - Baris 7-9 (
with warnings...): pemanggilannp.row_stackdibungkuswarnings.catch_warningsagar peringatannya terekam ke dalam listtererekam, bukan hanya dicetak ke layar; hasilnya identik dengannp.vstack, yaitu(2, 3). - Baris 12-13 (
print(terekam[0]...)): kategori peringatan adalahDeprecationWarning, dan pesannya meminta kita memanggilnp.vstacksecara langsung.