在實際的科學計算應用中,會遇到只知陣列大小,確無法先知道陣列元素的值,那可以使用三種函數 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"。