Numpy Array¶
Membuat Array dari Python List¶
In [2]:
# integer array: np.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
Out[13]:
array([5, 0, 3, 3, 7, 9])
In [14]:
# mengakses nilai 5 yang berada di index-0 x1[0]
In [15]:
# mengakses nilai 0 pada index-1 x1[1]
Untuk index dari belakang, menggunakan tanda negatif(-)
In [16]:
# Mengakses nilai terakhir pada array yaitu 9 x1[-1]
In [17]:
# Mengakses nilai sebelum nilai terakhir x1[-2]
Pada array multidemensi, kita dapat mengakses nilai tersebut dengan memberikan tanda koma (,)
Out[18]:
array([[3, 5, 2, 4], [7, 6, 8, 8], [1, 6, 7, 7]])
In [20]:
# Mengakses index baris 2 pada kolom terakhir x2[2,-1]
Numpy Array Attributes¶
[[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¶
Out[23]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [24]:
# Mengakses lima elemen pertama x[:5]
In [25]:
# Mengakses elemen setalh index 5 x[5:]
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
In [27]:
# Dimulai dari index 1 hingga terakhir, dengan step(melangkahi) 2 x[1::2]
Subarray Multidimensi¶
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
[[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)
In [32]:
# Kita akan merubah nilai dari x2_sub pada index 0,0 x2_sub[0,0] = 99 print(x2_sub)
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)
In [35]:
# Lalu kita ubah nilainya x2_sub_copy[0,0] = 42 print(x2_sub_copy)
In [36]:
# Lihat x2 yang asli, nilainya tidak berubah print(x2)
[[99 5 2 4] [ 7 6 8 8] [ 1 6 7 7]]