簡介
ndarray顧名思義,是一個用來存儲多維數(shù)組的數(shù)據(jù)結(jié)構(gòu)。
底層ndarray構(gòu)造函數(shù)
現(xiàn)在,用ndarray創(chuàng)建一個(2, 3)二維數(shù)組,并命名為a??梢钥吹剑?code>a是一個數(shù)組,包含2個元素;每個元素分別又是一個數(shù)組,包含3個float。請注意,float元素的值是隨機的,因為沒有指定。
>>> a = np.ndarray(shape=(2, 3), dtype=float)
>>> a
array([[ 6.91857857e-310, 6.91857857e-310, 4.78249221e-317],
[ 1.08552349e-316, 1.08552230e-316, 1.08552112e-316]])
接下來,我們可以用下標訪問數(shù)組a,取出子數(shù)組。數(shù)組a維數(shù)為2,子數(shù)組維數(shù)則為1。
>>> a[0]
array([ 6.91857857e-310, 6.91857857e-310, 4.78249221e-317])
>>> a[1]
array([ 1.08552349e-316, 1.08552230e-316, 1.08552112e-316])
第二維只包含2個元素,因此當(dāng)下標超出合法范圍時,訪問將報錯。請注意,錯誤類型為IndexError。
>>> a[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: index 2 is out of bounds for axis 0 with size 2
同樣地,通過下標可以訪問子數(shù)組的元素,即取出浮點數(shù)。
>>> a[0][0]
6.9185785704028074e-310
高層接口
在ndarray基礎(chǔ)上,numpy提供了若干個高層構(gòu)造函數(shù),包括zeros、empty等。
現(xiàn)在,使用zeros創(chuàng)建一個(2, 3, 4)三維數(shù)組。注意到,所有的值都初始化為0,而不是一堆沒有意義的隨機數(shù)值。
>>> np.zeros((2, 3, 4))
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.]]])