Numpy 初步
安装numpy
:pip install numpy --user
引入numpy
:import numpy as np
1 Numpy基本操作
1.1 列表转为矩阵
1 | array = np.array([ |
1.2 查看维度
1 | print('Number of dim: ', array.ndim) |
1.3 查看行数和列数
1 | print('rows and columns: ', array.shape) |
1.4 查看元素个数
1 | print('Number of elements: ', array.size) |
2 Numpy创建Array
2.1 维度
-
一维
1
2
3
4
5# 一维array
a = np.array([2, 43, 29], dtype=np.int32) # np.int报warning
print(a)
print(a.dtype) -
多维
1
2
3
4
5
6
7
8# 多维array
a = np.array([[1, 4, 7],
[2, 5, 8],
[3, 6, 9],
[0, 0, 0]])
print(a)
print(a.dtype)
2.2 填充数据
-
创建全零数组
1
2
3# 创建全零数组
a = np.zeros((2, 5))
print(a) -
创建全一数组
1
2
3# 创建全一数组,同时指定数据类型
a = np.ones((2, 5), dtype=np.int32)
print(a) -
创建全空数组
1
2
3
4
5# 创建全空数组,其实每个值都是接近于零的数
a = np.empty((2, 5))
print(a)
b = np.empty((2, 5))
print(b) -
创建连续数组
创建 [34, 45) 的数据,步长为31
2
3
4# 创建连续数组
# 创建 [34, 45) 的数据,步长为3
a = np.arange(34, 45, 3)
print(a) -
创建连续型数据
1
2
3
4# 创建线段型数据
# 开始端1,结束端10,且分割成20个数据,生成线段
a = np.linspace(1, 10, 20)
print(a)
2.3 reshape操作
使用reshape改变数组形状:
1 | # 使用reshape改变数组的形状 |
linspace使用reshape:
1 | a = np.linspace(1, 10, 20) |
3 Numpy基本运算
3.1 一维矩阵运算
1 | # 一维矩阵运算 |
3.2 多维矩阵运算
1 | # 多维矩阵运算 |
3.3 基本计算
1 | # 基本计算 |
1 | A = np.arange(14, 2, -1).reshape((3, 4)) # -1表示反向递减一个步长 |
clip(Array, Array_min, Array_max)
:
将Array_min < X < Array_max
,X
表示矩阵A
中的数:
- 如果满足上述关系,则原数不变;
- 如果
X < Array_min
,则将矩阵中X
变为Array_min
; - 如果
X > Array_max
,则将矩阵中X
变为Array_max
。
4 Numpy索引与切片
1 | array = np.arange(3, 15) |
1 | # 打印行 |
5 Numpy array合并
5.1 数组合并
1 | a = np.array([1, 2, 4]) |
5.2 数组转置为矩阵
1 | print(a[np.newaxis, :]) |
5.3 多个矩阵合并
1 | print(a[:, np.newaxis].shape) |
6 Numpy array分割
1 | # 构造3行四列矩阵 |
7 Numpy copy与=
=
赋值方式会带有关联性copy()
赋值方式没有关联性
1 | a = np.arange(4) |
1 | a = np.arange(4) |
8 广播机制
numpy
数组间的基础运算是一对一,也就是a.shape == b.shape
,但是当两者不一样的时候,就会自动触发广播机制
1 | a = np.array([[0, 0, 0], |
只有当两个数组的trailing dimensions compatible
时才会触发广播,否则报错ValueError: frames are not aligned exception
。尾部维度必须兼容。
9 常用函数
1 | # np.bincount() |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Morales!