属性 | 说明 |
---|---|
.ndim | 秩,即轴的数量或维度的数量 |
.shape | ndarry对象的尺度,对于矩阵,n行m列 |
.size | ndarry对象元素的个数,相当于n*m |
.dtype | ndarry对象的元素类型 |
.itemsize | ndarry对象每个元素的大小 |
In [3]: a = np.array([[0,1,2,3,4],[9,8,7,6,5]])
In [4]: a.ndim
Out[4]: 2
In [5]: a.shape
Out[5]: (2, 5)
In [6]: a.size
Out[6]: 10
In [7]: a.dtype
Out[7]: dtype('int32')
In [8]: a.itemsize
Out[8]: 4
数据类型 | 说明 |
---|---|
bool | 布尔类型,True或False |
inte | C语言中的int类型一致,一般是int32或int64 |
intp | 用于索引的整数,与C语言ssize_t一致,int32或int64 |
int8 | 字节长度整数,取值:[-128,127] |
int16 | 16位长度整数,取值:[-215,215] |
int32 | 32位长度整数,取值[-231,231-1] |
int64 | 64位长度的整数,取值[-263,263] |
uint8 | 8位无符号整数,取值:[0, 255] |
uint16 | 16位无符号整数,取值:[0, 65535] |
uint32 | 32位无符号整数,取值:[0,232‐1] |
uint64 | 32位无符号整数,取值:[0,264‐1] |
float16 | 16位半精度浮点数:1位符号位,5位指数,10位尾数 |
float32 | 32位半精度浮点数:1位符号位,8位指数,23位尾数 |
float64 | 64位半精度浮点数:1位符号位,11位指数,52位尾数 |
complex64 | 复数类型,实部和虚部都是32位浮点数 |
complex128 | 复数类型,实部和虚部都是64位浮点数 |
ndarray数组最好使用同质对象(.itemsize均相同)
x= np.array(list/tuple)
x= np.array(list/tuple, dtype=np.float32)
例子:
In [9]: x = np.array([0,1,2,3])
In [10]: print(x)
[0 1 2 3]
In [11]: x = np.array((4,5,6,7))
In [12]: print(x)
[4 5 6 7]
In [13]: x = np.array([[1,2],[5,7],(0.2,8.3)])
In [14]: print(x)
[[1. 2. ]
[5. 7. ]
[0.2 8.3]]
函数 | 说明 |
---|---|
np.arange(n) | 类似range()函数,返回ndarray类型,元素从0到n‐1 |
np.ones(shape) | 根据shape生成一个全1数组,shape是元组类型 |
np.zeros(shape) | 根据shape生成一个全0数组,shape是元组类型 |
np.full(shape,val) | 根据shape生成一个数组,每个元素值都是val |
np.eye(n) | 创建一个正方的n*n单位矩阵,对角线为1,其余为0 |
示例:
In [15]: np.arange(10)
Out[15]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [16]: np.ones((3,4))
Out[16]:
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
In [17]: np.zeros((3,6),dtype=np.int32)
Out[17]:
array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]])
In [19]: np.eye(4)
Out[19]:
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]])
In [20]: x = np.ones((2,3,4))
In [21]: print(x)
[[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
In [22]: x.shape
Out[22]: (2, 3, 4)
函数 | 说明 |
---|---|
np.ones_like(a) | 根据数组a的形状生成一个全1数组 |
np.zeros_like(a) | 根据数组a的形状生成一个全0数组 |
np.full_like(a,val) | 根据数组a的形状生成一个数组,每个元素值都是val |
函数 | 说明 |
---|---|
np.linspace() | 根据起止数据等间距地填充数据,形成数组 |
np.concatenate() | 将两个或多个数组合并成一个新的数组 |
示例:
In [22]: x.shape
Out[22]: (2, 3, 4)
In [23]: a = np.linspace(1,10,4)
In [24]: a
Out[24]: array([ 1., 4., 7., 10.])
In [25]: b=np.linspace(1,10,4,endpoint=False)
In [26]: b
Out[26]: array([1. , 3.25, 5.5 , 7.75])
In [27]: np.concatenate((a,b))
Out[27]: array([ 1. , 4. , 7. , 10. , 1. , 3.25, 5.5 , 7.75])
方法 | 说明 |
---|---|
.reshape(shape) | 不改变数组元素,返回一个shape形状的数组,原数组不变 |
.resize(shape) | 与.reshape()功能一致,但修改原数组 |
.swapaxes(ax1,ax2) | 将数组n个维度中两个维度进行调换 |
.flatten() | 对数组进行降维,返回折叠后的一维数组,原数组不变 |
In [28]: a = np.ones((2,6),dtype=np.int32)
In [29]: a.reshape((4,3))
Out[29]:
array([[1, 1, 1],
[1, 1, 1],
[1, 1, 1],
[1, 1, 1]])
In [30]: a
Out[30]:
array([[1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1]])
In [31]: a.resize(3,4)
In [32]: a
Out[32]:
array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]])
In [33]: a.flatten()
Out[33]: array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
In [34]: a
Out[34]:
array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]])
new_a = a.astype(new_type)
In [35]: a = np.ones((3,4),dtype=np.int)
In [36]: a
Out[36]:
array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]])
In [37]: b = a.astype(np.float)
In [38]: b
Out[38]:
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
astype()方法一定会创建新的数组(原始数据的一个拷贝),即使两个类型一致
ls= a.tolist()
In [40]: a = np.ones((3,4),dtype=np.int32)
In [41]: a
Out[41]:
array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]])
In [42]: a.tolist()
Out[42]: [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]