推薦閱讀時間:5min~6min
文章內容:Numpy中的N維數組 ndarray
Numpy 中最重要的一個對象就是 ndarray。
ndarray 結構圖ndarray中的每個元素在內存中使用相同大小的塊。 ndarray中的每個元素是數據類型對象的對象(稱為 dtype)。
從ndarray對象提取的任何元素(通過切片)由一個數組標量類型的 Python 對象表示。 下圖顯示了ndarray,數據類型對象(dtype)和數組標量類型之間的關係。
構建ndarray打開 Python 終端
>>> import numpy as np
>>> a = np.array([0, 1, 2, 3]) # 1-D
>>> aarray([0, 1, 2, 3])
>>> b = np.array([[0, 1, 2], [3, 4, 5]]) # 2-D, 2 row x 3 col
>>> barray([[0, 1, 2], [3, 4, 5]])
上面的方式是最基本的方法,也是最笨的方法,下面看一些非常「雞賊」的方法。
使用一些跟數值範圍相關的函數來創建。
>>> a = np.arange(10) # 生成 0-5 數組
>>> aarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = np.arange(1, 6, 2) # 生成開始為 1,結束為 5(6-1),步長為 2 數組
>>> barray([1, 3, 5])
常用的數組
>>> a = np.ones((3, 3)) # reminder: (3, 3) is a tuple
>>> aarray([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])
>>> b = np.zeros((2, 2))
>>> barray([[ 0., 0.], [ 0., 0.]])
>>> c = np.eye(3) # 單位矩陣
>>> carray([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])
>>> d = np.diag(np.array([1, 2, 3, 4])) # 對角矩陣
>>> darray([[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]])
隨機數組
>>> a = np.random.rand(2, 3) # uniform in [0, 1]
>>> aarray([[ 0.6713131 , 0.36077404, 0.13295515], [ 0.21052194, 0.39054944, 0.24861006]])
>>> b = np.random.randn(2, 3) # Gaussian
>>> barray([[-1.25166408, -0.61573192, -0.41214682], [-0.25353635, 1.04938271, 0.02308834]])
nddaray常用屬性
>>> a = np.array([(2,3,4), (5,6,7)])
>>> a.flags C_CONTIGUOUS : True F_CONTIGUOUS : False OWNDATA : True WRITEABLE : True ALIGNED : True UPDATEIFCOPY : False
>>> a.shape(2L, 3L)
>>> a.ndim
2
>>> a.strides(12L, 4L)
>>> a.data
<read-write buffer for 0x00000000099EA2B0, size 24, offset 0 at 0x0000000009953B20
>>>> a.size
6
>>> a.itemsize
4
>>> a.nbytes
24
>>> a.dtypedtype('int32')
>>> a.Tarray([[2, 5], [3, 6], [4, 7]])
作者:1or0,腦洞大開(www.naodongopen.com)籤約編輯,專注於機器學習、量化投資研究。