Numpy Array

Membuat Array dari Python List

In [1]:
import numpy as np
In [2]:
# integer array:
np.array([1, 2, 3, 4])
Out[2]:
array([1, 2, 3, 4])

Tidak seperti Python lists, Numpy array elemen-elemennya bertipe data sama. Apabila tipe data nya tidak sama maka Numpy akan melakuakan upcast (menyamakan ke tipe data yang lebih tinggi) misalnya integer akan upcast ke float:

In [3]:
np.array([3.14, 5, 2, 8])
Out[3]:
array([3.14, 5.  , 2.  , 8.  ])

Membuat Array dari Awal

Untuk membuat array yang besar, lebih efesien membuat array dari awal dengan menggunakan routine yang sudah terdapat di Numpy. Berikut beberapa contohnya:

In [4]:
# Membuat sebuah array bertipe integer dengan panjang 10 dan berisi semua nol
np.zeros(10, dtype=int)
Out[4]:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
In [5]:
# Membuat array berukuran 3x5 float dan berisi 1 semua
np.ones((3,5), dtype=int)
Out[5]:
array([[1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1]])
In [6]:
# Membuat 3x5 array yang berisi 3.14 semua
np.full((3,5),3.14)
Out[6]:
array([[3.14, 3.14, 3.14, 3.14, 3.14],
       [3.14, 3.14, 3.14, 3.14, 3.14],
       [3.14, 3.14, 3.14, 3.14, 3.14]])
In [7]:
# Membuat array berurutan dimulai dari 0 dan berakhir pada 20 dan bertambah 2
np.arange(0,20,2)
Out[7]:
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
In [8]:
# Membuat array dengan 5 nilai yang berjarak diatara 0 dan 1
np.linspace(0,1,5)
Out[8]:
array([0.  , 0.25, 0.5 , 0.75, 1.  ])
In [9]:
# Membuat 3x3 array random
# nilai random diantara 0 dan 1
np.random.random((3,3))
Out[9]:
array([[0.05681408, 0.33232413, 0.71184618],
       [0.60768214, 0.28107309, 0.7500548 ],
       [0.3864422 , 0.45528181, 0.05189743]])
In [10]:
# Membuat 3x3 array dengan random bertipe integer pada interval 0,10
np.random.randint(0,10, (3,3))
Out[10]:
array([[3, 9, 5],
       [7, 2, 6],
       [5, 7, 6]])
In [11]:
# Membuat 3x3 matriks identitas
np.eye(3)
Out[11]:
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

Array Indexing

Jika kamu sudah terbiasa dengan indexing pada Python standard, indexing di Numpy mirip seperti itu.

In [12]:
# Membuat array random
np.random.seed(0)
x1 = np.random.randint(10, size=6) # array satu dimensi
x2 = np.random.randint(10, size=(3,4)) # array dua dimensi
x3 = np.random.randint(10, size=(3,4,5)) # array tiga dimensi
In [13]:
x1
Out[13]:
array([5, 0, 3, 3, 7, 9])
In [14]:
# mengakses nilai 5 yang berada di index-0
x1[0]
Out[14]:
5
In [15]:
# mengakses nilai 0 pada index-1
x1[1]
Out[15]:
0

Untuk index dari belakang, menggunakan tanda negatif(-)

In [16]:
# Mengakses nilai terakhir pada array yaitu 9
x1[-1]
Out[16]:
9
In [17]:
# Mengakses nilai sebelum nilai terakhir
x1[-2]
Out[17]:
7

Pada array multidemensi, kita dapat mengakses nilai tersebut dengan memberikan tanda koma (,)

In [18]:
x2
Out[18]:
array([[3, 5, 2, 4],
       [7, 6, 8, 8],
       [1, 6, 7, 7]])
In [19]:
x2[0,0]
Out[19]:
3
In [20]:
# Mengakses index baris 2 pada kolom terakhir
x2[2,-1]
Out[20]:
7

Numpy Array Attributes

In [21]:
print(x2)
[[3 5 2 4]
 [7 6 8 8]
 [1 6 7 7]]
In [22]:
print("x2 ndim: ", x2.ndim) # Jumlah dimensi array
print("x2 shape: ", x2.shape) # Bentuk array
print("x2 size: ", x2.ndim) # total ukuran aaray
x2 ndim:  2
x2 shape:  (3, 4)
x2 size:  2

Array Slicing:Accessing Subarray

Mengakses subarray dengan menggunakan tanda (:) dengan cara x[start:stop:step]

Subarray Satu Dimensi

In [23]:
x = np.arange(10)
x
Out[23]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [24]:
# Mengakses lima elemen pertama
x[:5]
Out[24]:
array([0, 1, 2, 3, 4])
In [25]:
# Mengakses elemen setalh index 5
x[5:]
Out[25]:
array([5, 6, 7, 8, 9])
In [26]:
# middle subarray, dimulai dari index 4 sampai index 6
x[4:7]
# index stop nya 7 jadi index stop itu +1 dari index terakhir yang ingin kita ambil
Out[26]:
array([4, 5, 6])
In [27]:
# Dimulai dari index 1 hingga terakhir, dengan step(melangkahi) 2
x[1::2]
Out[27]:
array([1, 3, 5, 7, 9])

Subarray Multidimensi

In [28]:
x2
Out[28]:
array([[3, 5, 2, 4],
       [7, 6, 8, 8],
       [1, 6, 7, 7]])
In [29]:
# Mengakses 2 baris pertama dan 3 kolom pertama
x2[:2,:3]
Out[29]:
array([[3, 5, 2],
       [7, 6, 8]])

Subarray as no-copy views

Penting untuk diketaui slicing array hanya mengambil tampilan dari yang asli, sehingga array yang asli dapat dirubah nilainya dengan menggunakan variabel dari array sclicing nya. Berikut ini contohnya

In [30]:
print(x2)
[[3 5 2 4]
 [7 6 8 8]
 [1 6 7 7]]
In [31]:
# membuat 2x2 subarray x2
x2_sub = x2[:2,:2]
print(x2_sub)
[[3 5]
 [7 6]]
In [32]:
# Kita akan merubah nilai dari x2_sub pada index 0,0
x2_sub[0,0] = 99
print(x2_sub)
[[99  5]
 [ 7  6]]
In [33]:
# Dan coba lihat x2, nilainya juga akan berubah
print(x2)
[[99  5  2  4]
 [ 7  6  8  8]
 [ 1  6  7  7]]

Membuat Copy dari Array

In [34]:
x2_sub_copy = x2[:2,:2].copy()
print(x2_sub_copy)
[[99  5]
 [ 7  6]]
In [35]:
# Lalu kita ubah nilainya
x2_sub_copy[0,0] = 42
print(x2_sub_copy)
[[42  5]
 [ 7  6]]
In [36]:
# Lihat x2 yang asli, nilainya tidak berubah
print(x2)
[[99  5  2  4]
 [ 7  6  8  8]
 [ 1  6  7  7]]
In [ ]: