0% menganggap dokumen ini bermanfaat (0 suara)
19 tayangan30 halaman

Modul Analisis Data (TM3)

Diunggah oleh

bambangbudi.gap
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
19 tayangan30 halaman

Modul Analisis Data (TM3)

Diunggah oleh

bambangbudi.gap
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 30

1

MODUL PERKULIAHAN

W542100001
– Analisis
Data
Array dan Numpy

Abstrak Sub-CPMK

Array, Indeks, manipulasi, Sub-CPMK 2.1


operasi dasar Mampu menggunakan Pustaka Numpy
untuk operasi Array.
3.1. Pengetahuan Dasar
Objek utama NumPy adalah array multidimensi yang homogen. Ini adalah tabel
elemen (biasanya angka), semua dari jenis yang sama, diindeks oleh tupel bilangan bulat
non-negatif. Dalam dimensi NumPy disebut sumbu .
Misalnya, koordinat titik dalam ruang 3D [1, 2, 1]memiliki satu sumbu. Sumbu itu
memiliki 3 elemen di dalamnya, jadi kita katakan memiliki panjang 3. Pada contoh yang
digambarkan di bawah ini, array memiliki 2 sumbu. Sumbu pertama memiliki panjang 2,
sumbu kedua memiliki panjang 3.

[[1., 0., 0.],


[0., 1., 2.]]

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

202 Analisis Data


1 2 Eko Ihsanto, Dr, Ir, M.Eng
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
buffer yang berisi elemen sebenarnya dari array. Biasanya, kita tidak perlu menggunakan
atribut ini karena kita akan mengakses elemen dalam array menggunakan fasilitas
pengindeksan.

3.1.1. Contoh

>>> import numpy as np


>>> a = np.arange(15).reshape(3, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2
>>> a.dtype.name
'int64'
>>> a.itemsize
8
>>> a.size
15
>>> type(a)
<class 'numpy.ndarray'>
>>> b = np.array([6, 7, 8])
>>> b
array([6, 7, 8])
>>> type(b)
<class 'numpy.ndarray'>

3.1.2. Membuat Array


Ada beberapa cara untuk membuat array.
Misalnya, Anda dapat membuat larik dari daftar atau tupel Python biasa menggunakan
arrayfungsi. Jenis array yang dihasilkan disimpulkan dari jenis elemen dalam urutan.

>>> import numpy as np


>>> a = np.array([2, 3, 4])
>>> a
array([2, 3, 4])
>>> a.dtype
dtype('int64')
>>> b = np.array([1.2, 3.5, 5.1])
>>> b.dtype
dtype('float64')

Kesalahan yang sering terjadi adalah pemanggilan arraydengan beberapa argumen,


daripada memberikan urutan tunggal sebagai argumen.

>>> a = np.array(1, 2, 3, 4) # WRONG


Traceback (most recent call last):
...

202 Analisis Data


1 3 Eko Ihsanto, Dr, Ir, M.Eng
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
TypeError: array() takes from 1 to 2 positional arguments but 4 were given
>>> a = np.array([1, 2, 3, 4]) # RIGHT

array mengubah barisan barisan menjadi larik dua dimensi, barisan barisan barisan
menjadi susunan tiga dimensi, dan seterusnya.

>>> b = np.array([(1.5, 2, 3), (4, 5, 6)])


>>> b
array([[1.5, 2. , 3. ],
[4. , 5. , 6. ]])

Jenis larik juga dapat ditentukan secara eksplisit pada waktu pembuatan:

>>> c = np.array([[1, 2], [3, 4]], dtype=complex)


>>> c
array([[1.+0.j, 2.+0.j],
[3.+0.j, 4.+0.j]])

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.

>>> np.zeros((3, 4))


array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
>>> np.ones((2, 3, 4), dtype=np.int16)
array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]],

[[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.

>>> np.arange(10, 30, 5)


array([10, 15, 20, 25])
>>> np.arange(0, 2, 0.3) # it accepts float arguments
array([0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])

Ketika arangedigunakan dengan argumen floating point, umumnya tidak mungkin untuk
memprediksi jumlah elemen yang diperoleh, karena presisi floating point yang terbatas.

202 Analisis Data


1 4 Eko Ihsanto, Dr, Ir, M.Eng
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
Untuk alasan ini, biasanya lebih baik menggunakan fungsi linspaceyang menerima
sebagai argumen jumlah elemen yang kita inginkan, daripada langkah:

>>> from numpy import pi


>>> np.linspace(0, 2, 9) # 9 numbers from 0 to 2
array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
>>> x = np.linspace(0, 2 * pi, 100) # useful to evaluate function
at lots of points
>>> f = np.sin(x)

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.

>>> a = np.arange(6) # 1d array


>>> print(a)
[0 1 2 3 4 5]
>>>
>>> b = np.arange(12).reshape(4, 3) # 2d array
>>> print(b)
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
>>>
>>> c = np.arange(24).reshape(2, 3, 4) # 3d array
>>> print(c)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]

[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]

Lihat di bawah untuk mendapatkan detail lebih lanjut tentang reshape.


Jika array terlalu besar untuk dicetak, NumPy secara otomatis melewatkan bagian tengah
array dan hanya mencetak sudut:

>>> print(np.arange(10000))

202 Analisis Data


1 5 Eko Ihsanto, Dr, Ir, M.Eng
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
[ 0 1 2 ... 9997 9998 9999]
>>>
>>> print(np.arange(10000).reshape(100, 100))
[[ 0 1 2 ... 97 98 99]
[ 100 101 102 ... 197 198 199]
[ 200 201 202 ... 297 298 299]
...
[9700 9701 9702 ... 9797 9798 9799]
[9800 9801 9802 ... 9897 9898 9899]
[9900 9901 9902 ... 9997 9998 9999]]

Untuk menonaktifkan perilaku ini dan memaksa NumPy untuk mencetak seluruh array,
Anda dapat mengubah opsi pencetakan menggunakan set_printoptions.

>>> np.set_printoptions(threshold=sys.maxsize) # sys module should be imported

3.1.4. Operasi Dasar


Operator aritmatika pada array menerapkan elementwise . Array baru dibuat dan diisi
dengan hasilnya.

>>> a = np.array([20, 30, 40, 50])


>>> b = np.arange(4)
>>> b
array([0, 1, 2, 3])
>>> c = a - b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10 * np.sin(a)
array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854])
>>> a < 35
array([ True, True, False, False])

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:

>>> A = np.array([[1, 1],


... [0, 1]])
>>> B = np.array([[2, 0],
... [3, 4]])
>>> A * B # elementwise product
array([[2, 0],
[0, 4]])
>>> A @ B # matrix product
array([[5, 4],
[3, 4]])

202 Analisis Data


1 6 Eko Ihsanto, Dr, Ir, M.Eng
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
>>> A.dot(B) # another matrix product
array([[5, 4],
[3, 4]])

Beberapa operasi, seperti +=dan *=, bertindak di tempat untuk memodifikasi larik yang
ada daripada membuat larik baru.

>>> rg = np.random.default_rng(1) # create instance of default random number generator


>>> a = np.ones((2, 3), dtype=int)
>>> b = rg.random((2, 3))
>>> a *= 3
>>> a
array([[3, 3, 3],
[3, 3, 3]])
>>> b += a
>>> b
array([[3.51182162, 3.9504637 , 3.14415961],
[3.94864945, 3.31183145, 3.42332645]])
>>> a += b # b is not automatically converted to integer type
Traceback (most recent call last):
...
numpy.core._exceptions._UFuncOutputCastingError: Cannot cast ufunc 'add' output from
dtype('float64') to dtype('int64') with casting rule 'same_kind'

Saat beroperasi dengan array dari tipe yang berbeda, tipe array yang dihasilkan sesuai
dengan yang lebih umum atau tepat (perilaku yang dikenal sebagai upcasting).

>>> a = np.ones(3, dtype=np.int32)


>>> b = np.linspace(0, pi, 3)
>>> b.dtype.name
'float64'
>>> c = a + b
>>> c
array([1. , 2.57079633, 4.14159265])
>>> c.dtype.name
'float64'
>>> d = np.exp(c * 1j)

202 Analisis Data


1 7 Eko Ihsanto, Dr, Ir, M.Eng
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
>>> d
array([ 0.54030231+0.84147098j, -0.84147098+0.54030231j,
-0.54030231-0.84147098j])
>>> d.dtype.name
'complex128'

Banyak operasi unary, seperti menghitung jumlah semua elemen dalam array,
diimplementasikan sebagai metode ndarraykelas.

>>> a = rg.random((2, 3))


>>> a
array([[0.82770259, 0.40919914, 0.54959369],
[0.02755911, 0.75351311, 0.53814331]])
>>> a.sum()
3.1057109529998157
>>> a.min()
0.027559113243068367
>>> a.max()
0.8277025938204418

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

202 Analisis Data


1 8 Eko Ihsanto, Dr, Ir, M.Eng
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
array([[ 0, 1, 3, 6],
[ 4, 9, 15, 22],
[ 8, 17, 27, 38]])

3.1.5. Fungsi Universal


NumPy menyediakan fungsi matematika yang sudah dikenal seperti sin, cos, dan exp. Di
NumPy, ini disebut "fungsi universal" ( ufunc). Di dalam NumPy, fungsi-fungsi ini
beroperasi secara elemen pada array, menghasilkan array sebagai output.

>>> 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;

202 Analisis Data


1 9 Eko Ihsanto, Dr, Ir, M.Eng
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
>>> # from start to position 6, exclusive, set every 2nd element to 1000
>>> a[:6:2] = 1000
>>> a
array([1000, 1, 1000, 27, 1000, 125, 216, 343, 512, 729])
>>> a[::-1] # reversed a
array([ 729, 512, 343, 216, 125, 1000, 27, 1000, 1, 1000])
>>> for i in a:
... print(i**(1 / 3.))
...
9.999999999999998
1.0
9.999999999999998
3.0
9.999999999999998
4.999999999999999
5.999999999999999
6.999999999999999
7.999999999999999
8.999999999999998

Array multidimensi dapat memiliki satu indeks per sumbu. Indeks-indeks ini diberikan
dalam tupel yang dipisahkan oleh koma:

>>> def f(x, y):


... return 10 * x + y
...
>>> b = np.fromfunction(f, (5, 4), dtype=int)
>>> b
array([[ 0, 1, 2, 3],
[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33],
[40, 41, 42, 43]])
>>> b[2, 3]
23
>>> b[0:5, 1] # each row in the second column of b

202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

0 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


array([ 1, 11, 21, 31, 41])
>>> b[:, 1] # equivalent to the previous example
array([ 1, 11, 21, 31, 41])
>>> b[1:3, :] # each column in the second and third row of b
array([[10, 11, 12, 13],
[20, 21, 22, 23]])

Ketika indeks yang diberikan lebih sedikit daripada jumlah sumbu, indeks yang hilang
dianggap sebagai irisan lengkap:

>>> b[-1] # the last row. Equivalent to b[-1, :]


array([40, 41, 42, 43])

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, :]

>>> c = np.array([[[ 0, 1, 2], # a 3D array (two stacked 2D arrays)


... [ 10, 12, 13]],
... [[100, 101, 102],
... [110, 112, 113]]])
>>> c.shape
(2, 2, 3)
>>> c[1, ...] # same as c[1, :, :] or c[1]
array([[100, 101, 102],
[110, 112, 113]])
>>> c[..., 2] # same as c[:, :, 2]
array([[ 2, 13],
[102, 113]])

Iterasi array multidimensi dilakukan sehubungan dengan sumbu pertama:

>>> for row in b:


... print(row)

202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

1 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


...
[0 1 2 3]
[10 11 12 13]
[20 21 22 23]
[30 31 32 33]
[40 41 42 43]

Namun, jika seseorang ingin melakukan operasi pada setiap elemen dalam array,
seseorang dapat menggunakan flatatribut yang merupakan iterator atas semua elemen
array:

>>> for element in b.flat:


... print(element)
...
0
1
2
3
10
11
12
13
20
21
22
23
30
31
32
33
40
41
42
43

Lihat juga
Pengindeksan , Pengindeksan (referensi), newaxis, ndenumerate, indices

202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

2 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


3.2. Manipulasi Bentuk Array
3.2.1 Mengubah bentuk array
Array memiliki bentuk yang diberikan oleh jumlah elemen di sepanjang setiap sumbu:

>>> a = np.floor(10 * rg.random((3, 4)))


>>> a
array([[3., 7., 3., 4.],
[1., 4., 2., 2.],
[7., 2., 4., 9.]])
>>> a.shape
(3, 4)

Bentuk array dapat diubah dengan berbagai perintah. Perhatikan bahwa tiga perintah
berikut semuanya mengembalikan array yang dimodifikasi, tetapi tidak mengubah array
asli:

>>> a.ravel() # returns the array, flattened


array([3., 7., 3., 4., 1., 4., 2., 2., 7., 2., 4., 9.])
>>> a.reshape(6, 2) # returns the array with a modified shape
array([[3., 7.],
[3., 4.],
[1., 4.],
[2., 2.],
[7., 2.],
[4., 9.]])
>>> a.T # returns the array, transposed
array([[3., 1., 7.],
[7., 4., 2.],
[3., 2., 4.],
[4., 2., 9.]])
>>> a.T.shape
(4, 3)
>>> a.shape
(3, 4)

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

3 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


membuat array yang disimpan dalam urutan ini, jadi biasanya tidak perlu menyalin
argumennya, tetapi jika array dibuat dengan mengambil irisan array lain atau dibuat
dengan opsi yang tidak biasa, mungkin perlu disalin. Fungsi dan juga dapat
diinstruksikan, menggunakan argumen opsional, untuk menggunakan array gaya
FORTRAN, di mana indeks paling kiri berubah paling cepat.a[0, 0]a[0,
1]ravelravelreshape
The reshapemengembalikan fungsi argumen dengan bentuk yang dimodifikasi,
sedangkan ndarray.resizemetode memodifikasi array itu sendiri:

>>> 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:

>>> a.reshape(3, -1)


array([[3., 7., 3., 4.],
[1., 4., 2., 2.],
[7., 2., 4., 9.]])

Lihat juga
ndarray.shape, reshape, resize, ravel
3.2.2. Menyusun Array
Beberapa array dapat ditumpuk bersama di sepanjang sumbu yang berbeda:

>>> a = np.floor(10 * rg.random((2, 2)))


>>> a
array([[9., 7.],
[5., 2.]])
>>> b = np.floor(10 * rg.random((2, 2)))
>>> b
array([[1., 9.],
[5., 1.]])

202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

4 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


>>> np.vstack((a, b))
array([[9., 7.],
[5., 2.],
[1., 9.],
[5., 1.]])
>>> np.hstack((a, b))
array([[9., 7., 1., 9.],
[5., 2., 5., 1.]])

Fungsi column_stackmenumpuk array 1D sebagai kolom ke dalam array 2D. Ini setara
dengan hstackhanya untuk array 2D:

>>> from numpy import newaxis


>>> np.column_stack((a, b)) # with 2D arrays
array([[9., 7., 1., 9.],
[5., 2., 5., 1.]])
>>> a = np.array([4., 2.])
>>> b = np.array([3., 8.])
>>> np.column_stack((a, b)) # returns a 2D array
array([[4., 3.],
[2., 8.]])
>>> np.hstack((a, b)) # the result is different
array([4., 2., 3., 8.])
>>> a[:, newaxis] # view `a` as a 2D column vector
array([[4.],
[2.]])
>>> np.column_stack((a[:, newaxis], b[:, newaxis]))
array([[4., 3.],
[2., 8.]])
>>> np.hstack((a[:, newaxis], b[:, newaxis])) # the result is the same
array([[4., 3.],
[2., 8.]])

Di sisi lain, fungsinya row_stacksetara dengan vstack untuk array input apa pun.
Sebenarnya, row_stackadalah alias untuk vstack:

>>> np.column_stack is np.hstack

202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

5 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


False
>>> np.row_stack is np.vstack
True

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:

>>> a = np.floor(10 * rg.random((2, 12)))


>>> a
array([[6., 7., 6., 9., 0., 5., 4., 0., 6., 8., 5., 2.],
[8., 5., 5., 7., 1., 8., 6., 7., 1., 8., 1., 0.]])
>>> # Split `a` into 3
>>> np.hsplit(a, 3)
[array([[6., 7., 6., 9.],
[8., 5., 5., 7.]]), array([[0., 5., 4., 0.],
[1., 8., 6., 7.]]), array([[6., 8., 5., 2.],
[1., 8., 1., 0.]])]
>>> # Split `a` after the third and the fourth column
>>> np.hsplit(a, (3, 4))

202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

6 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


[array([[6., 7., 6.],
[8., 5., 5.]]), array([[9.],
[7.]]), array([[0., 5., 4., 0., 6., 8., 5., 2.],
[1., 8., 6., 7., 1., 8., 1., 0.]])]

vsplitmembagi sepanjang sumbu vertikal, dan array_splitmemungkinkan seseorang


untuk menentukan di sepanjang sumbu mana yang akan dibagi.

3.3. Copy dan Views Array


Saat mengoperasikan dan memanipulasi array, datanya terkadang disalin ke array baru
dan terkadang tidak. Ini sering menjadi sumber kebingungan bagi pemula. Ada tiga kasus:
3.3.1. Tidak Ada Salinan
Tugas sederhana tidak membuat salinan objek atau datanya.

>>> a = np.array([[ 0, 1, 2, 3],


... [ 4, 5, 6, 7],
... [ 8, 9, 10, 11]])
>>> b = a # no new object is created
>>> b is a # a and b are two names for the same ndarray object
True

Python melewati objek yang bisa berubah sebagai referensi, jadi panggilan fungsi tidak
membuat salinan.

>>> def f(x):


... print(id(x))
...
>>> id(a) # id is a unique identifier of an object
148293216 # may vary
>>> f(a)
148293216 # may vary

3.3.2. View dan Copy


Objek array yang berbeda dapat berbagi data yang sama. The viewMetode membuat
objek array baru yang terlihat di data yang sama.

>>> c = a.view()

202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

7 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


>>> c is a
False
>>> c.base is a # c is a view of the data owned by a
True
>>> c.flags.owndata
False
>>>
>>> c = c.reshape((2, 6)) # a's shape doesn't change
>>> a.shape
(3, 4)
>>> c[0, 4] = 1234 # a's data changes
>>> a
array([[ 0, 1, 2, 3],
[1234, 5, 6, 7],
[ 8, 9, 10, 11]])

Mengiris array mengembalikan tampilannya:

>>> s = a[:, 1:3]


>>> s[:] = 10 # s[:] is a view of s. Note the difference between s = 10 and s[:] = 10
>>> a
array([[ 0, 10, 10, 3],
[1234, 10, 10, 7],
[ 8, 10, 10, 11]])

3.3.3. Deep Copy


The copyMetode membuat salinan lengkap dari array dan data.

>>> d = a.copy() # a new array object with new data is created


>>> d is a
False
>>> d.base is a # d doesn't share anything with a
False
>>> d[0, 0] = 9999
>>> a
array([[ 0, 10, 10, 3],
[1234, 10, 10, 7],

202
1 1 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

8 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


[ 8, 10, 10, 11]])

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

9 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


NumPy menawarkan lebih banyak fasilitas pengindeksan daripada urutan Python biasa.
Selain pengindeksan oleh bilangan bulat dan irisan, seperti yang kita lihat sebelumnya,
array dapat diindeks oleh array bilangan bulat dan array boolean.
3.4.1. Mengindeks Array

>>> a = np.arange(12)**2 # the first 12 square numbers


>>> i = np.array([1, 1, 3, 8, 5]) # an array of indices
>>> a[i] # the elements of `a` at the positions `i`
array([ 1, 1, 9, 64, 25])
>>>
>>> j = np.array([[3, 4], [9, 7]]) # a bidimensional array of indices
>>> a[j] # the same shape as `j`
array([[ 9, 16],
[81, 49]])

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.

>>> palette = np.array([[0, 0, 0], # black


... [255, 0, 0], # red
... [0, 255, 0], # green
... [0, 0, 255], # blue
... [255, 255, 255]]) # white
>>> image = np.array([[0, 1, 2, 0], # each value corresponds to a color in the palette
... [0, 3, 4, 0]])
>>> palette[image] # the (2, 4, 3) color image
array([[[ 0, 0, 0],
[255, 0, 0],
[ 0, 255, 0],
[ 0, 0, 0]],

[[ 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

0 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


>>> a = np.arange(12).reshape(3, 4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> i = np.array([[0, 1], # indices for the first dim of `a`
... [1, 2]])
>>> j = np.array([[2, 1], # indices for the second dim
... [3, 3]])
>>>
>>> a[i, j] # i and j must have equal shape
array([[ 2, 5],
[ 7, 11]])
>>>
>>> a[i, 2]
array([[ 2, 6],
[ 6, 10]])
>>>
>>> a[:, j]
array([[[ 2, 1],
[ 3, 3]],

[[ 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

1 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


Namun, kita tidak dapat melakukan ini dengan meletakkan idan jke dalam array, karena
array ini akan ditafsirkan sebagai pengindeksan dimensi pertama dari a.

>>> s = np.array([i, j])


>>> # not what we want
>>> a[s]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: index 3 is out of bounds for axis 0 with size 3
>>> # same as `a[i, j]`
>>> a[tuple(s)]
array([[ 2, 5],
[ 7, 11]])

Penggunaan umum lainnya dari pengindeksan dengan array adalah pencarian nilai
maksimum dari deret bergantung waktu:

>>> time = np.linspace(20, 145, 5) # time scale


>>> data = np.sin(np.arange(20)).reshape(5, 4) # 4 time-dependent series
>>> time
array([ 20. , 51.25, 82.5 , 113.75, 145. ])
>>> data
array([[ 0. , 0.84147098, 0.90929743, 0.14112001],
[-0.7568025 , -0.95892427, -0.2794155 , 0.6569866 ],
[ 0.98935825, 0.41211849, -0.54402111, -0.99999021],
[-0.53657292, 0.42016704, 0.99060736, 0.65028784],
[-0.28790332, -0.96139749, -0.75098725, 0.14987721]])
>>> # index of the maxima for each series
>>> ind = data.argmax(axis=0)
>>> ind
array([2, 0, 3, 1])
>>> # times corresponding to the maxima
>>> time_max = time[ind]
>>>
>>> data_max = data[ind, range(data.shape[1])] # => data[ind[0], 0], data[ind[1], 1]...
>>> time_max
array([ 82.5 , 20. , 113.75, 51.25])
>>> data_max

202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

2 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


array([0.98935825, 0.84147098, 0.99060736, 0.6569866 ])
>>> np.all(data_max == data.max(axis=0))
True

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

3 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


>>> b = a > 4
>>> b # `b` is a boolean with `a`'s shape
array([[False, False, False, False],
[False, True, True, True],
[ True, True, True, True]])
>>> a[b] # 1d array with the selected elements
array([ 5, 6, 7, 8, 9, 10, 11])

Properti ini bisa sangat berguna dalam tugas:

>>> a[b] = 0 # All elements of `a` higher than 4 become 0


>>> a
array([[0, 1, 2, 3],
[4, 0, 0, 0],
[0, 0, 0, 0]])

Anda dapat melihat contoh berikut untuk melihat cara menggunakan pengindeksan
boolean untuk menghasilkan gambar himpunan Mandelbrot :

>>> import numpy as np


>>> import matplotlib.pyplot as plt
>>> def mandelbrot(h, w, maxit=20, r=2):
... """Returns an image of the Mandelbrot fractal of size (h,w)."""
... x = np.linspace(-2.5, 1.5, 4*h+1)
... y = np.linspace(-1.5, 1.5, 3*w+1)
... A, B = np.meshgrid(x, y)
... C = A + B*1j
... z = np.zeros_like(C)
... divtime = maxit + np.zeros(z.shape, dtype=int)
...
... for i in range(maxit):
... z = z**2 + C
... diverge = abs(z) > r # who is diverging
... div_now = diverge & (divtime == maxit) # who is diverging now
... divtime[div_now] = i # note when
... z[diverge] = r # avoid diverging too much
...

202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

4 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


... return divtime
>>> plt.imshow(mandelbrot(400, 400))

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

5 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


>>> a[b1, b2] # a weird thing to do
array([ 4, 10])

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:

>>> a = np.array([2, 3, 4, 5])


>>> b = np.array([8, 5, 4])
>>> c = np.array([5, 4, 6, 8, 3])
>>> ax, bx, cx = np.ix_(a, b, c)
>>> ax
array([[[2]],

[[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

6 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


[[43, 35, 51, 67, 27],
[28, 23, 33, 43, 18],
[23, 19, 27, 35, 15]],

[[44, 36, 52, 68, 28],


[29, 24, 34, 44, 19],
[24, 20, 28, 36, 16]],

[[45, 37, 53, 69, 29],


[30, 25, 35, 45, 20],
[25, 21, 29, 37, 17]]])
>>> result[3, 2, 4]
17
>>> a[3] + b[2] * c[4]
17

Anda juga dapat menerapkan pengurangan sebagai berikut:

>>> def ufunc_reduce(ufct, *vectors):


... vs = np.ix_(*vectors)
... r = ufct.identity
... for v in vs:
... r = ufct(r, v)
... return r

dan kemudian menggunakannya sebagai:

>>> ufunc_reduce(np.add, a, b, c)
array([[[15, 14, 16, 18, 13],
[12, 11, 13, 15, 10],
[11, 10, 12, 14, 9]],

[[16, 15, 17, 19, 14],


[13, 12, 14, 16, 11],
[12, 11, 13, 15, 10]],

202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

7 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


[[17, 16, 18, 20, 15],
[14, 13, 15, 17, 12],
[13, 12, 14, 16, 11]],

[[18, 17, 19, 21, 16],


[15, 14, 16, 18, 13],
[14, 13, 15, 17, 12]]])

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.

3.5. Trik dan Tips


Berikut kami berikan daftar tips singkat dan bermanfaat.
3.5.1. Pembentukan Otomatis
Untuk mengubah dimensi array, Anda dapat menghilangkan salah satu ukuran yang
kemudian akan dideduksi secara otomatis:

>>> 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]],

[[15, 16, 17],


[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29]]])

3.5.2. Menumpuk (Stacking) Vektor

202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

8 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


Bagaimana kita membangun array 2D dari daftar vektor baris berukuran sama? Di
MATLAB ini cukup mudah: jika xdan yadalah dua vektor dengan panjang yang sama,
Anda hanya perlu melakukan m=[x;y]. Di NumPy ini bekerja melalui fungsi column_stack,
dstack, hstackdan vstack, tergantung pada dimensi di mana penumpukan harus
dilakukan. Sebagai contoh:

>>> x = np.arange(0, 10, 2)


>>> y = np.arange(5)
>>> m = np.vstack([x, y])
>>> m
array([[0, 2, 4, 6, 8],
[0, 1, 2, 3, 4]])
>>> xy = np.hstack([x, y])
>>> xy
array([0, 2, 4, 6, 8, 0, 1, 2, 3, 4])

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.

>>> import numpy as np


>>> rg = np.random.default_rng(1)
>>> import matplotlib.pyplot as plt
>>> # Build a vector of 10000 normal deviates with variance 0.5^2 and mean 2
>>> mu, sigma = 2, 0.5
>>> v = rg.normal(mu, sigma, 10000)
>>> # Plot a normalized histogram with 50 bins
>>> plt.hist(v, bins=50, density=True) # matplotlib version (plot)
>>> # Compute the histogram with numpy and then plot it
>>> (n, bins) = np.histogram(v, bins=50, density=True) # NumPy version (no plot)
>>> plt.plot(.5 * (bins[1:] + bins[:-1]), n)

202
1 2 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

9 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/


Dengan Matplotlib >=3.4 Anda juga dapat menggunakan .plt.stairs(n, bins)

Daftar Pustaka
https://numpy.org/doc/stable/user/quickstart.html

202
1 3 Analisis Data
Biro Bahan Ajar E-learning dan MKCU

0 Eko Ihsanto, Dr, Ir, M.Eng http://pbael.mercubuana.ac.id/

Anda mungkin juga menyukai