## 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)
```