NumPy reshape: Ubah Bentuk Array (2026)
TL;DR
NumPy reshape ngubah bentuk array tanpa ngubah isinya, misalnya dari 12 angka jadi grid 3 baris 4 kolom pakai arr.reshape(3, 4). Jumlah elemen sebelum dan sesudah harus sama. Kamu bisa pakai -1 di salah satu dimensi biar NumPy ngitung sendiri ukurannya, misalnya arr.reshape(-1, 4).
NumPy reshape itu cara ngubah bentuk array tanpa ngubah isinya. Deret 12 angka bisa jadi grid 3 baris 4 kolom pakai arr.reshape(3, 4).
Datanya tetap sama. Yang berubah cuma cara nyusunnya. Ini sering kepakai buat nyiapin data sebelum masuk ke hitungan matriks atau model.
Aku bahas cara pakainya, arti angka -1 yang bikin bingung, dan cara ngeflat array balik jadi 1 dimensi. Contohnya pakai data penjualan toko.
Apa itu reshape di NumPy?
Reshape ngubah bentuk array tanpa nambah atau ngurangin elemennya. Kamu kasih tau dimensi baru yang kamu mau, dan NumPy nyusun ulang angka yang sama ke bentuk itu. Syarat utamanya, jumlah elemen sebelum dan sesudah harus sama.
Kalau kamu belum kenal array NumPy, mulai dari dasar-dasar NumPy array dulu biar konsep shape-nya nempel. Reshape itu lanjutan langsung dari situ.
import numpy as np
arr = np.arange(12) # [0 1 2 3 4 5 6 7 8 9 10 11]
arr.shape # (12,)
reshaped = arr.reshape(3, 4)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]Gimana cara pakai reshape?
Panggil .reshape() di array dan masukin dimensi barunya sebagai argumen. Buat array 2 dimensi, kasih dua angka: jumlah baris dan jumlah kolom. Hasil kali kedua angka itu harus sama dengan total elemen array asli.
arr = np.arange(12)
arr.reshape(3, 4) # 3 baris, 4 kolom
arr.reshape(4, 3) # 4 baris, 3 kolom
arr.reshape(2, 6) # 2 baris, 6 kolom
arr.reshape(12, 1) # jadi kolom tunggalSemua ini valid karena 3x4, 4x3, 2x6, dan 12x1 sama-sama 12. NumPy ngisi angka baris per baris dari kiri ke kanan.
Apa arti reshape(-1) di NumPy?
Angka -1 nyuruh NumPy ngitung sendiri ukuran dimensi itu dari total elemen. Kamu pakai waktu tau satu dimensi tapi males ngitung yang lain. Cuma boleh ada satu -1 dalam sekali reshape.
arr = np.arange(12)
arr.reshape(-1, 4) # NumPy isi jadi 3 baris
arr.reshape(2, -1) # NumPy isi jadi 6 kolom
arr.reshape(-1) # jadi 1 dimensi lagiDi baris pertama, kamu bilang kolomnya 4, NumPy ngitung baris 12 / 4 = 3. Ini kepakai banget waktu jumlah baris data berubah-ubah tapi kolomnya tetap.
Gimana cara ngeflat array jadi 1 dimensi?
Pakai reshape(-1), atau fungsi khusus flatten() dan ravel(). Ketiganya ngeratain array multi dimensi jadi satu deret. Bedanya ada di soal salinan memori.
matrix = np.array([[1, 2, 3],
[4, 5, 6]])
matrix.reshape(-1) # [1 2 3 4 5 6]
matrix.flatten() # [1 2 3 4 5 6] selalu salinan baru
matrix.ravel() # [1 2 3 4 5 6] view kalau bisaKalau kamu nggak mau array asli ikut keubah, pakai flatten karena dia selalu bikin salinan. Ravel lebih hemat memori tapi bisa berbagi data dengan array asli.
| Cara | Hasil | Salinan? |
|---|---|---|
| reshape(-1) | 1 dimensi | view kalau bisa |
| flatten() | 1 dimensi | selalu salinan |
| ravel() | 1 dimensi | view kalau bisa |
Contoh kasus: data penjualan mingguan toko_berkah
Toko_berkah punya data penjualan harian 3 cabang selama 4 minggu, total 84 angka dalam satu deret panjang dari export sistem. Aku mau susun ulang jadi bentuk yang gampang dihitung.
data = np.arange(84) # anggap ini 84 angka penjualan harian
# 3 cabang, 28 hari
per_cabang = data.reshape(3, -1)
per_cabang.shape # (3, 28)
# rata-rata harian per cabang
per_cabang.mean(axis=1)Dengan reshape(3, -1), aku cuma bilang ada 3 cabang, NumPy ngitung sendiri 28 hari per cabang. Habis itu rata-rata per baris langsung kasih performa tiap cabang.
Trik -1 ini yang bikin kode nggak perlu diubah walau jumlah harinya beda tiap export. Selama total elemen habis dibagi 3, reshape-nya tetap jalan.
Kesalahan umum saat pakai reshape
- Jumlah elemen nggak cocok. Array 12 elemen nggak bisa jadi 3x5. Cek
arr.sizedulu, pastikan hasil kali dimensi baru sama persis. - Pakai lebih dari satu -1. NumPy cuma bisa ngitung satu dimensi otomatis. Dua -1 langsung error.
- Lupa reshape balikin view. Ngubah hasil reshape bisa ngubah array asli. Tambahin
.copy()kalau perlu terpisah. - Ketuker urutan baris dan kolom.
reshape(3, 4)beda hasil darireshape(4, 3). Pastikan urutannya sesuai maksud kamu.
FAQ
Apa arti angka -1?
NumPy ngitung sendiri dimensi itu dari total elemen. Cuma boleh satu -1 per reshape.
Kenapa error cannot reshape?
Jumlah elemen lama dan baru nggak cocok. Cek arr.size dan hasil kali dimensi barunya.
Bedanya flatten dan ravel?
Flatten selalu bikin salinan, ravel balikin view kalau bisa. Flatten lebih aman kalau nggak mau data asli keubah.
Lanjut praktek
Ringkasnya: reshape ngubah bentuk tanpa ngubah data, jumlah elemen harus tetap sama, dan -1 bikin NumPy ngitung satu dimensi otomatis.
Reshape sering jadi langkah persiapan sebelum data masuk perhitungan. Kalau data kamu dari file, baca cara baca CSV pakai pandas dulu. Detail lengkap parameter reshape ada di dokumentasi resmi NumPy.
Mau lanjut ngulik operasi array yang lebih dalam? Cek materi Python buat analis di Ngulik Data dan latih langsung di dataset sendiri.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
NumPy Array: Dasar-Dasar untuk Analis Data (2026)
NumPy array bikin hitungan data di Python jauh lebih cepat dari list biasa. Ini dasar bikin, slicing, dan operasi array buat analis.
Alternatif iterrows yang Lebih Cepat di Pandas
iterrows nyaman ditulis tapi lambat. Ini urutan alternatif iterrows di pandas dari yang tercepat, plus benchmark biar kamu tau kapan pakai yang mana.
Vektorisasi vs Loop di Pandas: Mana Lebih Cepat
Loop iterrows di data 100 ribu baris bisa makan 3 detik. Versi vektornya kelar di bawah 5 milidetik. Ini cara ubah loop lambat jadi operasi kolom yang ngebut.