Cara menggunakan NP.RANDOM.RANDOM pada Python

random.rand(d0, d1, ..., dn)#

Random values in a given shape.

Note

This is a convenience function for users porting code from Matlab, and wraps random_sample. That function takes a tuple to specify the size of the output, which is consistent with other NumPy functions like numpy.zeros and numpy.ones.

Create an array of the given shape and populate it with random samples from a uniform distribution over [0, 1).

Parametersd0, d1, …, dnint, optional

The dimensions of the returned array, must be non-negative. If no argument is given a single Python float is returned.

Returnsoutndarray, shape (d0, d1, ..., dn)

Random values.

Examples

>>> np.random.rand(3,2)
array([[ 0.14022471,  0.96360618],  #random
       [ 0.37601032,  0.25528411],  #random
       [ 0.49313049,  0.94909878]]) #random

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