Numpy 简介
Numpy 库是 Python 中科学计算的核心库。它提供了高性能的多维数组对象以及用于处理这些数组的工具。
使用以下约定导入 Numpy
1 | import numpy as np |
Numpy 数组
帮助
1 | np.info(np.ndarray.dtype) |
创建数组
1 | a = np.array([1,2,3]) |
初始占位符
1 | # 创建一个零数组 |
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
1 | # 创建一个数组 |
array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]],
[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]], dtype=int16)
1 | # 创建均匀间隔值的数组(步长值) |
1 | # 创建均匀间隔值的数组(样本数) |
array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
1 | # 创建常量数组 |
1 | # 创建2X2单位矩阵 |
1 | # 创建具有随机值的数组 |
array([[0.64234353, 0.07179718],
[0.7937333 , 0.13764298]])
1 | # 创建一个空数组 |
array([[0., 0.],
[0., 0.],
[0., 0.]])
文件 I / O
在磁盘上保存 & 加载
1 | np.save('my_array', a) |
array([1, 2, 3])
保存 & 加载文本文件
1 | np.loadtxt("myfile.txt") |
数据类型
1 | # 有符号的64位整数类型 |
numpy.int64
1 | # 标准双精度浮点复数 |
numpy.float32
1 | # 由128浮点数表示的布尔类型 |
complex
1 | # 存储TRUE和FALSE |
bool
1 | # 值Python对象类型 |
object
1 | # 固定长度的字符串类型 |
numpy.bytes_
1 | # 固定长度的unicode类型 |
numpy.str_
检查数组
1 | # 数组尺寸 |
(3,)
1 | # 数组长度 |
3
1 | # 数组维数 |
2
1 | # 数组元素的数量 |
4
1 | # 数组元素的数据类型 |
dtype(‘float64’)
1 | # 数据类型的名称 |
‘float64’
1 | # 将数组转换为其他类型 |
array([[1, 2, 3],
[4, 5, 6]])
数学运算
算术运算
1 | # 减法 |
array([[-0.5, 0. , 0. ],
[-3. , -3. , -3. ]])
1 | # 减法 |
array([[-0.5, 0. , 0. ],
[-3. , -3. , -3. ]])
1 | # 加法 |
array([[2.5, 4. , 6. ],
[5. , 7. , 9. ]])
1 | # 加法 |
array([[2.5, 4. , 6. ],
[5. , 7. , 9. ]])
1 | # 乘法 |
array([[ 1.5, 4. , 9. ],
[ 4. , 10. , 18. ]])
1 | # 除法 |
array([[0.66666667, 1. , 1. ],
[0.25 , 0.4 , 0.5 ]])
1 | # 幂 |
array([[ 1.5, 4. , 9. ],
[ 4. , 10. , 18. ]])
1 | # 平方根 |
array([[1.22474487, 1.41421356, 1.73205081],
[2. , 2.23606798, 2.44948974]])
1 | # 正弦 |
array([0.84147098, 0.90929743, 0.14112001])
1 | # 余弦 |
array([[ 0.0707372 , -0.41614684, -0.9899925 ],
[-0.65364362, 0.28366219, 0.96017029]])
1 | # 自然对数 |
array([0. , 0.69314718, 1.09861229])
1 | # 点积 |
array([[7., 7.],
[7., 7.]])
比较
1 | # 元素比较 |
array([[False, True, True],
[False, False, False]])
1 | # 元素比较 |
array([ True, False, False])
1 | # 数组比较 |
False
聚合函数
1 | # 数组式和 |
6
1 | # 数组最小值 |
1
1 | # 数组行的最大值 |
array([4., 5., 6.])
1 | # 元素的累积总和 |
array([[ 1.5, 3.5, 6.5],
[ 4. , 9. , 15. ]])
1 | # 均值 |
2.0
1 | # 中位数 |
3.5
1 | # 相关系数 |
array([[1. , 0.98198051, 1. ],
[0.98198051, 1. , 0.98198051],
[1. , 0.98198051, 1. ]])
1 | # 标准差 |
1.5920810978785667
复制数组
1 | # 使用相同的数据创建数组视图 |
array([1, 2, 3])
1 | # 创建数组的副本 |
array([1, 2, 3])
1 | # 创建数组的深层副本 |
array([1, 2, 3])
排序数组
1 | # 对数组进行排序 |
array([1, 2, 3])
1 | # 对数组轴的元素进行排序 |
array([[[1.5, 2. , 1. ],
[4. , 5. , 6. ]],
[[3. , 2. , 3. ],
[4. , 5. , 6. ]]])
切片与索引
下标
1 | a[2] |
3
1 | b[1,2] |
6.0
切片
1 | a[:2] |
array([1, 2])
1 | b[0:2,1] |
array([2., 5.])
1 | b[:1] |
array([[1.5, 2. , 3. ]])
1 | c[1, ...] |
array([[3., 2., 3.],
[4., 5., 6.]])
1 | a[ : :-1] |
array([3, 2, 1])
布尔索引
1 | a[a<2] |
array([1])
1 | # 花式索引 |
array([4. , 2. , 6. , 1.5])
1 | b[[1, 0, 1, 0]][:,[0,1,2,0]] |
array([[4. , 5. , 6. , 4. ],
[1.5, 2. , 3. , 1.5],
[4. , 5. , 6. , 4. ],
[1.5, 2. , 3. , 1.5]])
数组操作
转置数组
1 | # 重新排列数组维度 |
1 | # 重新排列数组维度 |
array([[1.5, 2. , 3. ],
[4. , 5. , 6. ]])
改变形状
1 | # 展平数组 |
array([1.5, 2. , 3. , 4. , 5. , 6. ])
1 | g.reshape(3, -2) |
array([[-0.5, 0. ],
[ 0. , -3. ],
[-3. , -3. ]])
添加 / 删除元素
1 | # 返回一个形状为新的数组(2,6) |
1 | # 将元素附加到数组 |
array([ 1. , 2. , 3. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
- , -0.5, 0. , 0. , -3. , -3. , -3. ])
1 | # 在数组中插入元素 |
array([1, 5, 2, 3])
1 | # 从数组中删除元素 |
array([1, 3])
结合数组
1 | # 连接数组 |
array([ 1, 2, 3, 10, 15, 20])
1 | # 垂直堆叠数组(逐行) |
array([[1. , 2. , 3. ],
[1.5, 2. , 3. ],
[4. , 5. , 6. ]])
1 | # 垂直堆叠数组(逐行) |
array([[7., 7.],
[7., 7.],
[1., 0.],
[0., 1.]])
1 | # 水平堆叠阵列(逐列) |
array([[7., 7., 1., 0.],
[7., 7., 0., 1.]])
1 | # 创建堆叠的列式数组 |
array([[ 1, 10],
[ 2, 15],
[ 3, 20]])
1 | # 创建堆叠的列式数组 |
array([[ 1, 10],
[ 2, 15],
[ 3, 20]])
分割数组
1 | # 在第3个索引处水平拆分数组 |
[array([1]), array([2]), array([3])]
1 | h |
1 | # 在第 2 个索引处垂直拆分数组 |
[array([[[1.5, 2. , 1. ],
[4. , 5. , 6. ]]]), array([[[3., 2., 3.],
[4., 5., 6.]]])]