1. 初始化
numpy数组即numpy的ndarray对象,创建numpy数组就是把一个列表传入np.array()方法。
下面介绍4种方法:
- 从Python中的列表、元组等类型创建ndarray数组。
x = np.array(list/tuple)
x = np.array(list/tuple, dtype=np.float32) # 可以指定类型
x = np.array([[1, 2], [8, 9], (0.1, 0.2)])
- 使用NumPy中函数创建ndarray数组,如: arange,ones,zeros等
需要注意的是,`ones''zeros''eyes'创建的都是浮点数类型的数组,arange生成的是整数类型,有需要可以指定类型
x = np.ones((3,6) , dtype = np.int32)
# [[1 1 1 1 1 1]
# [1 1 1 1 1 1]
# [1 1 1 1 1 1]]
x = np.ones((3,6))
# [[1. 1. 1. 1. 1. 1.]
# [1. 1. 1. 1. 1. 1.]
# [1. 1. 1. 1. 1. 1.]]
a = np.linspace(1,10,4) # array([ 1., 4., 7., 10.])
b = np.linspace(1,10,4,endpoint=False) # array([ 1. , 3.25, 5.5 , 7.75])
c = np.concatenate((a, b)) # array([ 1. , 4. , 7. , 10. , 1. , 3.25, 5.5 , 7.75])
- 从字节流(raw bytes )中创建ndarray数组。
- 从文件中读取特定格式,创建ndarray数组。
2. 常用属性
属性 | 解释 |
---|---|
T | 数组的转置(对高维数组而言) |
dtype | 数组元素的数据类型 |
size | 数组元素的个数 |
ndim | 数组的维数 |
shape | 数组的维度大小(以元组形式) |
astype | 类型转换 |
2.1 shape获取行列数
arr = np.array([[1, 2, 3], [4, 5, 6]])
arr.ndim # 2
arr.shape # (2, 3)
arr.shape[0] # 2 提取行数
arr.shape[1] # 3 提取列数
arr.size # 6
arr.dtype # dtype('int32')
2.2 元素类型
同时还支持两种负数类型:2.3 类型转换
astype()
方法一定会创建新的数组(原始数据的一个拷贝),即使两个类型一致。
还可以使用tolist
函数向列表转换
2.4. 数组的维度变换
a = np.ones((2, 3, 4))
a.reshape(3, 8)
a.resize(3, 8)
a.flatten()
3. 数组的索引和切片
一维数组的索引和切片: 与Python的列表类似
多维数组的索引:
a = np.arange(24).reshape((2,3,4))
# [[[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
# [[12 13 14 15]
# [16 17 18 19]
# [20 21 22 23]]]
a[1, 2, 3] # 23
a[-1, -2, -3] # 17
多维数组的切片:
依然以上面的a数组为例进行切片
4. 数组的运算
4.1 与标量的运算
数组与标量之间的运算作用于数组的每一个元素
a = np.arange(24).reshape((2,3,4))
a = a/a.mean() # a.mean() = 11.5
# array([[[0. , 0.08695652, 0.17391304, 0.26086957],
# [0.34782609, 0.43478261, 0.52173913, 0.60869565],
# [0.69565217, 0.7826087 , 0.86956522, 0.95652174]],
# [[1.04347826, 1.13043478, 1.2173913 , 1.30434783],
# [1.39130435, 1.47826087, 1.56521739, 1.65217391],
# [1.73913043, 1.82608696, 1.91304348, 2. ]]])