2019年1月12日 星期六

[Python學習筆記] python科學計算庫(NumPy)的學習(四):使用 empty()、ones()、zeros() 函數產生固定大小的陣列

在實際的科學計算應用中,會遇到只知陣列大小,確無法先知道陣列元素的值,那可以使用三種函數 empty()、ones()、zeros() 來建立有初始值的陣列,使用範例如下:

(1)empty()函數:empty()函數是產生一個有大小但無初始值的陣列,初始值會是記憶體原來的值,無特別意義。

>>> import numpy as np
>>> array1=np.empty((3,4))
>>> array1
array([[4.44659081e-323, 0.00000000e+000, 0.00000000e+000,
        0.00000000e+000],
       [9.09532578e-315, 9.09532625e-315, 9.09301140e-315,
        9.09530578e-315],
       [0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
        0.00000000e+000]])

上面的範例為產生 3x4 的二維陣列, array1 的初始值是一堆亂數,無特別意義。

(2)ones()函數:ones()函數是產生一個有大小,初始值1的陣列。

>>> array2=np.ones((3,4,5))
>>> array2
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., 1.],
        [1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.]],

       [[1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.]]])

>>> array2.dtype
dtype('float64')

上面的範例為產生 3x4x5 的三維陣列,初始值為1的陣列,沒有指定資料型態,預設值為 "float64"。

(3)zeros()函數:zeros()函數是產生一個有大小,初始值0的陣列。

>>> array3=np.zeros((5,6),dtype=np.int16)
>>> array3
array([[0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0]], dtype=int16)

上面的範例為產生 5x6 的二維陣列,初始值為0的陣列,指定資料型態為 "int16"。