Modul Analisis Data (TM3)
Modul Analisis Data (TM3)
MODUL PERKULIAHAN
W542100001
– Analisis
Data
Array dan Numpy
Abstrak Sub-CPMK
Kelas array NumPy disebut ndarray. Itu juga dikenal dengan alias array. Perhatikan
bahwa numpy.arrayini tidak sama dengan class Standard Python Library array.array,
yang hanya menangani array satu dimensi dan menawarkan fungsionalitas yang lebih
sedikit. Atribut yang lebih penting dari suatu ndarrayobjek adalah:
ndarray.ndim
jumlah sumbu (dimensi) dari array.
ndarray.shape
dimensi array. Ini adalah tupel bilangan bulat yang menunjukkan ukuran array di setiap
dimensi. Untuk matriks dengan n baris dan m kolom, shapeakan (n,m). Oleh karena itu,
panjang shapetupel adalah jumlah sumbu, ndim.
ndarray.size
jumlah total elemen array. Ini sama dengan produk dari elemen shape.
ndarray.dtype
sebuah objek yang menjelaskan tipe elemen dalam array. Seseorang dapat membuat
atau menentukan dtype menggunakan tipe Python standar. Selain itu NumPy
menyediakan jenisnya sendiri. numpy.int32, numpy.int16, dan numpy.float64 adalah
beberapa contohnya.
ndarray.itemsize
ukuran dalam byte dari setiap elemen array. Misalnya, array elemen bertipe
float64memiliki itemsize8 (=64/8), sedangkan salah satu tipe complex32memiliki
itemsize4 (=32/8). Ini setara dengan ndarray.dtype.itemsize.
ndarray.data
3.1.1. Contoh
array mengubah barisan barisan menjadi larik dua dimensi, barisan barisan barisan
menjadi susunan tiga dimensi, dan seterusnya.
Jenis larik juga dapat ditentukan secara eksplisit pada waktu pembuatan:
Seringkali, elemen array awalnya tidak diketahui, tetapi ukurannya diketahui. Oleh karena
itu, NumPy menawarkan beberapa fungsi untuk membuat array dengan konten
placeholder awal. Ini meminimalkan perlunya pertumbuhan array, operasi yang mahal.
Fungsi zerosmembuat larik yang penuh dengan nol, fungsi membuat larik yang penuh
dengan nol, onesdan fungsi empty membuat larik yang konten awalnya acak dan
bergantung pada status memori. Secara default, dtype dari array yang dibuat adalah
float64, tetapi dapat ditentukan melalui argumen kata kunci dtype.
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]], dtype=int16)
>>> np.empty((2, 3))
array([[3.73603959e-262, 6.02658058e-154, 6.55490914e-260], # may vary
[5.30498948e-313, 3.14673309e-307, 1.00000000e+000]])
Untuk membuat urutan angka, NumPy menyediakan arangefungsi yang analog dengan
built-in Python range, tetapi mengembalikan array.
Ketika arangedigunakan dengan argumen floating point, umumnya tidak mungkin untuk
memprediksi jumlah elemen yang diperoleh, karena presisi floating point yang terbatas.
Lihat juga
array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace,
numpy.random.Generator.rand , numpy.random.Generator.randn , fromfunction,
fromfile
3.1.3. Print Array
Saat Anda mencetak array, NumPy menampilkannya dengan cara yang mirip dengan
daftar bersarang, tetapi dengan tata letak berikut:
sumbu terakhir dicetak dari kiri ke kanan,
yang kedua hingga terakhir dicetak dari atas ke bawah,
sisanya juga dicetak dari atas ke bawah, dengan setiap irisan dipisahkan dari yang
berikutnya dengan garis kosong.
Array satu dimensi kemudian dicetak sebagai baris, bidimensional sebagai matriks dan
tridimensi sebagai daftar matriks.
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
>>> print(np.arange(10000))
Untuk menonaktifkan perilaku ini dan memaksa NumPy untuk mencetak seluruh array,
Anda dapat mengubah opsi pencetakan menggunakan set_printoptions.
Tidak seperti di banyak bahasa matriks, operator produk *beroperasi secara elemen
dalam array NumPy. Produk matriks dapat dilakukan menggunakan @operator (dalam
python >=3.5) atau dotfungsi atau metode:
Beberapa operasi, seperti +=dan *=, bertindak di tempat untuk memodifikasi larik yang
ada daripada membuat larik baru.
Saat beroperasi dengan array dari tipe yang berbeda, tipe array yang dihasilkan sesuai
dengan yang lebih umum atau tepat (perilaku yang dikenal sebagai upcasting).
Banyak operasi unary, seperti menghitung jumlah semua elemen dalam array,
diimplementasikan sebagai metode ndarraykelas.
Secara default, operasi ini berlaku untuk array seolah-olah itu adalah daftar angka,
terlepas dari bentuknya. Namun, dengan menetapkan axis parameter, Anda dapat
menerapkan operasi di sepanjang sumbu larik yang ditentukan:
>>> b = np.arange(12).reshape(3, 4)
>>> b
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>>
>>> b.sum(axis=0) # sum of each column
array([12, 15, 18, 21])
>>>
>>> b.min(axis=1) # min of each row
array([0, 4, 8])
>>>
>>> b.cumsum(axis=1) # cumulative sum along each row
>>> B = np.arange(3)
>>> B
array([0, 1, 2])
>>> np.exp(B)
array([1. , 2.71828183, 7.3890561 ])
>>> np.sqrt(B)
array([0. , 1. , 1.41421356])
>>> C = np.array([2., -1., 4.])
>>> np.add(B, C)
array([2., 0., 6.])
Lihat juga
all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip,
conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, invert, lexsort,
max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sort,
std, sum, trace, transpose, var, vdot, vectorize, where
3.1.6. Indeks, Iris dan Iterasi
Array satu dimensi dapat diindeks, diiris dan diulang, seperti daftar dan urutan Python
lainnya.
>>> a = np.arange(10)**3
>>> a
array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729])
>>> a[2]
8
>>> a[2:5]
array([ 8, 27, 64])
>>> # equivalent to a[0:6:2] = 1000;
Array multidimensi dapat memiliki satu indeks per sumbu. Indeks-indeks ini diberikan
dalam tupel yang dipisahkan oleh koma:
202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Ketika indeks yang diberikan lebih sedikit daripada jumlah sumbu, indeks yang hilang
dianggap sebagai irisan lengkap:
Ekspresi dalam tanda kurung b[i]diperlakukan sebagai i diikuti oleh sebanyak mungkin
contoh yang :diperlukan untuk mewakili sumbu yang tersisa. NumPy juga memungkinkan
Anda untuk menulis ini menggunakan titik sebagai .b[i, ...]
The titik ( ...) mewakili sebanyak titik dua yang diperlukan untuk menghasilkan tupel
pengindeksan lengkap. Misalnya, jika xadalah array dengan 5 sumbu, maka
x[1, 2, ...]setara dengan ,x[1, 2, :, :, :]
x[..., 3]untuk danx[:, :, :, :, 3]
x[4, ..., 5, :]untuk .x[4, :, :, 5, :]
202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Namun, jika seseorang ingin melakukan operasi pada setiap elemen dalam array,
seseorang dapat menggunakan flatatribut yang merupakan iterator atas semua elemen
array:
Lihat juga
Pengindeksan , Pengindeksan (referensi), newaxis, ndenumerate, indices
202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Bentuk array dapat diubah dengan berbagai perintah. Perhatikan bahwa tiga perintah
berikut semuanya mengembalikan array yang dimodifikasi, tetapi tidak mengubah array
asli:
Urutan elemen dalam larik yang dihasilkan ravelbiasanya “C-style”, yaitu indeks paling
kanan “berubah paling cepat”, jadi elemen setelahnya adalah . Jika array dibentuk
kembali ke bentuk lain, sekali lagi array diperlakukan sebagai "C-style". NumPy biasanya
202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
>>> a
array([[3., 7., 3., 4.],
[1., 4., 2., 2.],
[7., 2., 4., 9.]])
>>> a.resize((2, 6))
>>> a
array([[3., 7., 3., 4., 1., 4.],
[2., 2., 7., 2., 4., 9.]])
Jika dimensi diberikan seperti -1dalam operasi pembentukan ulang, dimensi lain secara
otomatis dihitung:
Lihat juga
ndarray.shape, reshape, resize, ravel
3.2.2. Menyusun Array
Beberapa array dapat ditumpuk bersama di sepanjang sumbu yang berbeda:
202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Fungsi column_stackmenumpuk array 1D sebagai kolom ke dalam array 2D. Ini setara
dengan hstackhanya untuk array 2D:
Di sisi lain, fungsinya row_stacksetara dengan vstack untuk array input apa pun.
Sebenarnya, row_stackadalah alias untuk vstack:
202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Secara umum, untuk array dengan lebih dari dua dimensi, hstacktumpukan di sepanjang
sumbu kedua, vstacktumpukan di sepanjang sumbu pertama, dan concatenate
memungkinkan untuk argumen opsional memberikan jumlah sumbu di mana rangkaian
harus terjadi.
Catatan
Dalam kasus yang kompleks, r_dan c_berguna untuk membuat array dengan menumpuk
angka di sepanjang satu sumbu. Mereka memungkinkan penggunaan literal jangkauan :.
>>> np.r_[1:4, 0, 4]
array([1, 2, 3, 0, 4])
Ketika digunakan dengan array sebagai argumen, r_dan c_mirip dengan vstackdan
hstackdalam perilaku defaultnya, tetapi mengizinkan argumen opsional yang memberikan
nomor sumbu yang akan digabungkan.
Lihat juga
hstack, vstack, column_stack, concatenate, c_, r_
3.2.3. Memisahkan array menjadi lebih kecil
Dengan menggunakan hsplit, Anda dapat membagi larik di sepanjang sumbu
horizontalnya, baik dengan menentukan jumlah larik berbentuk sama yang akan
dikembalikan, atau dengan menentukan kolom setelah pembagian akan terjadi:
202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Python melewati objek yang bisa berubah sebagai referensi, jadi panggilan fungsi tidak
membuat salinan.
>>> c = a.view()
202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Terkadang copyharus dipanggil setelah mengiris jika array asli tidak diperlukan lagi.
Misalnya, anggaplah ahasil antara yang sangat besar dan hasil akhir bhanya berisi
sebagian kecil dari a, salinan dalam harus dibuat saat membuat bdengan mengiris:
>>> a = np.arange(int(1e8))
>>> b = a[:100].copy()
>>> del a # the memory of ``a`` can be released.
Jika digunakan sebagai gantinya, direferensikan oleh dan akan bertahan dalam memori
bahkan jika dijalankan.b = a[:100]abdel a
3.3.4. Fungsi Array
Berikut adalah daftar beberapa fungsi dan nama metode NumPy yang berguna yang
diurutkan dalam kategori. Lihat Rutinitas untuk daftar lengkapnya.
Pembuatan Array
arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity,
linspace, logspace, mgrid, ogrid, ones, ones_like, r_, zeros, zeros_like
Konversi
ndarray.astype, atleast_1d, atleast_2d, atleast_3d, mat
Manipulasi
array_split, column_stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack,
ndarray.item, newaxis, ravel, repeat, reshape, resize, squeeze, swapaxes, take,
transpose, vsplit, vstack
Pertanyaan
all, any, nonzero, where
Memerintah
argmax, argmin, argsort, max, min, ptp, searchsorted, sort
Operasi
choose, compress, cumprod, cumsum, inner, ndarray.fill, imag, prod, put, putmask,
real, sum
Statistik Dasar
cov, mean, std, var
Aljabar Linier Dasar
cross, dot, outer, linalg.svd, vdot
3.4. Indeks
202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Ketika array yang diindeks aadalah multidimensi, array indeks tunggal mengacu pada
dimensi pertama dari a. Contoh berikut menunjukkan perilaku ini dengan mengubah
gambar label menjadi gambar berwarna menggunakan palet.
[[ 0, 0, 0],
[ 0, 0, 255],
[255, 255, 255],
[ 0, 0, 0]]])
Kami juga dapat memberikan indeks untuk lebih dari satu dimensi. Array indeks untuk
setiap dimensi harus memiliki bentuk yang sama.
202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
[[ 6, 5],
[ 7, 7]],
[[10, 9],
[11, 11]]])
Di Python, persis sama dengan —jadi kita bisa memasukkan dan ke dalam dan kemudian
melakukan pengindeksan dengan itu.arr[i, j]arr[(i, j)]ijtuple
>>> l = (i, j)
>>> # equivalent to a[i, j]
>>> a[l]
array([[ 2, 5],
[ 7, 11]])
202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Penggunaan umum lainnya dari pengindeksan dengan array adalah pencarian nilai
maksimum dari deret bergantung waktu:
202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Anda juga dapat menggunakan pengindeksan dengan array sebagai target untuk
ditetapkan ke:
>>> a = np.arange(5)
>>> a
array([0, 1, 2, 3, 4])
>>> a[[1, 3, 4]] = 0
>>> a
array([0, 0, 2, 0, 0])
Namun, ketika daftar indeks berisi pengulangan, penugasan dilakukan beberapa kali,
meninggalkan nilai terakhir:
>>> a = np.arange(5)
>>> a[[0, 0, 2]] = [1, 2, 3]
>>> a
array([2, 1, 3, 3, 4])
Ini cukup masuk akal, tetapi hati-hati jika Anda ingin menggunakan +=konstruksi Python ,
karena mungkin tidak melakukan apa yang Anda harapkan:
>>> a = np.arange(5)
>>> a[[0, 0, 2]] += 1
>>> a
array([1, 1, 3, 3, 4])
Meskipun 0 muncul dua kali dalam daftar indeks, elemen ke-0 hanya bertambah satu kali.
Ini karena Python harus setara dengan .a += 1a = a + 1
3.4.2. Mengindeks dengan Boolean
Ketika kami mengindeks array dengan array indeks (bilangan bulat), kami menyediakan
daftar indeks untuk dipilih. Dengan indeks boolean pendekatannya berbeda; kita secara
eksplisit memilih item mana dalam array yang kita inginkan dan mana yang tidak.
Cara paling alami yang dapat dipikirkan untuk pengindeksan boolean adalah dengan
menggunakan array boolean yang memiliki bentuk yang sama dengan array aslinya:
>>> a = np.arange(12).reshape(3, 4)
202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Anda dapat melihat contoh berikut untuk melihat cara menggunakan pengindeksan
boolean untuk menghasilkan gambar himpunan Mandelbrot :
202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Cara pengindeksan kedua dengan boolean lebih mirip dengan pengindeksan bilangan
bulat; untuk setiap dimensi larik, kami memberikan larik boolean 1D dengan memilih irisan
yang kami inginkan:
>>> a = np.arange(12).reshape(3, 4)
>>> b1 = np.array([False, True, True]) # first dim selection
>>> b2 = np.array([True, False, True, False]) # second dim selection
>>>
>>> a[b1, :] # selecting rows
array([[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>>
>>> a[b1] # same thing
array([[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>>
>>> a[:, b2] # selecting columns
array([[ 0, 2],
[ 4, 6],
[ 8, 10]])
>>>
202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Perhatikan bahwa panjang larik boolean 1D harus sesuai dengan panjang dimensi (atau
sumbu) yang ingin Anda potong. Pada contoh sebelumnya, b1memiliki panjang 3 (jumlah
baris dalam a), dan b2(panjang 4) cocok untuk mengindeks sumbu ke-2 (kolom) dari a.
3.4.3. Fungsi ix_ ()
The ix_fungsi dapat digunakan untuk menggabungkan vektor yang berbeda sehingga
memperoleh hasil untuk setiap n-uplet. Misalnya, jika Anda ingin menghitung semua
a+b*c untuk semua kembar tiga yang diambil dari masing-masing vektor a, b dan c:
[[3]],
[[4]],
[[5]]])
>>> bx
array([[[8],
[5],
[4]]])
>>> cx
array([[[5, 4, 6, 8, 3]]])
>>> ax.shape, bx.shape, cx.shape
((4, 1, 1), (1, 3, 1), (1, 1, 5))
>>> result = ax + bx * cx
>>> result
array([[[42, 34, 50, 66, 26],
[27, 22, 32, 42, 17],
[22, 18, 26, 34, 14]],
202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
>>> ufunc_reduce(np.add, a, b, c)
array([[[15, 14, 16, 18, 13],
[12, 11, 13, 15, 10],
[11, 10, 12, 14, 9]],
202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Keuntungan dari versi pengurangan ini dibandingkan dengan ufunc.reduce normal adalah
bahwa ia menggunakan aturan penyiaran untuk menghindari pembuatan array argumen
ukuran keluaran kali jumlah vektor.
>>> a = np.arange(30)
>>> b = a.reshape((2, -1, 3)) # -1 means "whatever is needed"
>>> b.shape
(2, 5, 3)
>>> b
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]],
202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Logika di balik fungsi-fungsi itu di lebih dari dua dimensi bisa jadi aneh.
Lihat juga
NumPy untuk pengguna MATLAB
3.5.3. Histogram
Fungsi NumPy yang histogramditerapkan ke array mengembalikan sepasang vektor:
histogram array dan vektor tepi bin. Hati-hati: matplotlibjuga memiliki fungsi untuk
membangun histogram (disebut hist, seperti di Matlab) yang berbeda dari yang ada di
NumPy. Perbedaan utama adalah pylab.histmemplot histogram secara otomatis,
sementara numpy.histogramhanya menghasilkan data.
202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU
Daftar Pustaka
https://numpy.org/doc/stable/user/quickstart.html
202
1 3 Analisis Data
Biro Bahan Ajar E-learning dan MKCU