## NumPy
### 创建多维
* 矩阵 数组 向量
* 1 创建数组
* 一维二维数组
* 查看形状
* 元素个数
* 元素类型
* 数组维度
* 最大最小值
```
import numpy as np
# 一维数组
a1 = np.array([1, 2, 3, 4])
# 多维数组各个维度的大小,返回一个元组
a1.shape
# 数组里面元素个数
a1.size
# 数组中数据类型
a1.dtype
# 二维数组
a2 = np.array([[1.0, 2.5, 3], [0.5, 4, 9]])
a2.shape,a2.size,a2.dtype
a2.min()
a1
a2
# 数组类型为ndarray
type(a1)
```
* 2 创建数组
* 指定值范围
* 值全为1
* 值全为0
* 值全无意义
* 值全为1三维
```
# 元素值为0-3数组
a1 = np.arange(4)
a1
# 查看维数
a1.ndim
# 元素值全为1 4x4数组
a2 = np.ones((4, 4), dtype=np.int64)
a2
a2.dtype
a2.ndim
a2.shape
# 元素值全为0 2x2数组
a3 = np.zeros((2, 2))
a3
a3.dtype
a3.ndim
a4 = np.empty((3, 3), dtype=np.int64)
a4
a4.dtype
a4.shape
a4.ndim
a5 = np.ones((4, 3, 4))
a5
a5.ndim
```
* 3 改变数组现状
```
a = np.arange(12)
a
a.reshape(4, 3)
```
### 多维数组索引
* 4 列表切片
```
l = [1, 2, 3, 4, 5]
l[:2]
l[2:4]
l[1:5:2]
```
* 5 数组切片
```
a = np.arange(12)
a
a[1:4]
a[1:10:2]
```
* 6 数组的值修改
```
a = np.arange(12)
a
a[1:5] = -1
a
a[1:10:2] = 1
a
```
* 7 数组
* 二维数组
* 查看数组行
* 查看数组列
* 修改行列固定位置值
```
a = np.arange(12).reshape(3, 4)
a.shape
a
a[0]
a[1]
a[:, 0]
a[:, 1]
a[:, 2]
a[0, 0]
a[0, 1]
a[1, 1]
a[1, 2]
a[0] = 1
a
a[:, 1] = -1
a
```
* 8 多维数组降维
* 三维抽取出二维
* 查看形状 维度 值 列 行 赋值
```
a = np.arange(27).reshape(3, 3, 3)
a.ndim
a.shape
a
a1 = a[1]
a1
a1.shape
a2 = a[1, 1]
a2
a2.shape
a2.ndim
a[2, 2, 2]
a[:, 1]
a[:, 1] = 1
a
```
#### 多维数组运算
* 9 矩阵运算
* 所有元素全部加
* 所有元素全部乘
```
a = np.arange(12).reshape(3, 4)
a
a += 1
a
a *= 2
a
```
* 10 两个数组运算
* `+` `-` 乘法 内积
```
a = np.arange(4).reshape(2, 2)
b = np.arange(4, 8).reshape(2, 2)
a
b
b - a
a + b
a * b
a.dot(b)
```
* 11 逻辑比较运算
* 挑选出矩阵中逻辑运算为true的值
```
a = np.arange(12).reshape(4, 3)
b = a > 5
b
a[b]
```
* 12 数组元素求和
* 数组求和
* 数组列求和
* 数组行求和
```
a
a.sum()
a.sum(axis=0)
a.sum(axis=1)
```