NumPy's main object is the homogeneous multidimensional array. It is a table of elements (usually numbers), all of the same type, indexed by a tuple of positive integers. In NumPy dimensions are called axes. The number of axes is rank.
For example, the coordinates of a point in 3D space [1, 2, 1] is an array of rank 1, because it has one axis. That axis has a length of 3. In the example pictured below, the array has rank 2 (it is 2-dimensional). The first dimension (axis) has a length of 2, the second dimension has a length of 3.
[[ 1., 0., 0.], [ 0., 1., 2.]]
ndarray.ndim
數組軸的個數,在python的世界中,軸的個數被稱作秩
>> X = np.reshape(np.arange(24), (2, 3, 4)) # 也即 2 行 3 列的 4 個平面(plane)>> Xarray([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]])
shape函數是numpy.core.fromnumeric中的函數,它的功能是讀取矩陣的長度,比如shape[0]就是讀取矩陣第一維度的長度。
shape(x)
(2,3,4)
shape(x)[0]
2
或者
x.shape[0]
2
再來分別看每一個平面的構成:
>> X[:, :, 0]array([[ 0, 4, 8], [12, 16, 20]])>> X[:, :, 1]array([[ 1, 5, 9], [13, 17, 21]])>> X[:, :, 2]array([[ 2, 6, 10], [14, 18, 22]])>> X[:, :, 3]array([[ 3, 7, 11], [15, 19, 23]])
也即在對 np.arange(24)(0, 1, 2, 3, ..., 23) 進行重新的排列時,在多維數組的多個軸的方向上,先分配最后一個軸(對于二維數組,即先分配行的方向,對于三維數組即先分配平面的方向)
reshpae,是數組對象中的方法,用于改變數組的形狀。
二維數組
#!/usr/bin/env python # coding=utf-8 import numpy as np a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) print a d=a.reshape((2,4)) print d

三維數組
#!/usr/bin/env python # coding=utf-8 import numpy as np a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) print a f=a.reshape((2, 2, 2)) print f

形狀變化的原則是數組元素不能發生改變,比如這樣寫就是錯誤的,因為數組元素發生了變化。
#!/usr/bin/env python # coding=utf-8 import numpy as np a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) print a print a.dtype e=a.reshape((2,2)) print e

注意:通過reshape生成的新數組和原始數組公用一個內存,也就是說,假如更改一個數組的元素,另一個數組也將發生改變。
#!/usr/bin/env python # coding=utf-8 import numpy as np a=np.array([1, 2, 3, 4, 5, 6, 7, 8]) print a e=a.reshape((2, 4)) print e a[1]=100 print a print e
新聞熱點
疑難解答