# 【机器学习算法推导】科学计算库numpy
作者:wallace-lai
发布:2023-11-28
更新:2023-11-29
## 一、简介
NumPy是一个用于**大规模矩阵和数组运算**的**高性能**Python计算库,广泛应用于Python矩阵运算和数据处理,在机器学习中亦有大量应用。
NumPy中有两种基本的对象,分别是多维数组ndarray(N-dimensional Array Object)和通用函数对象ufunc(Universal Function Object)。多维数组是相同类型元素的一个多维存储容器,而通用函数则是一种以逐元素方式操作ndarray的函数,它支持数组广播、类型转换和其他一些标准功能。
## 二、多维数组
一个ndarray是具有相同类型和大小(一般是固定大小)元素的多维容器。容器尺寸和数组中的元素数量是由它的`shape`决定的,数组中的元素类型则由`dtype`指定。
```python
>>> x = np.array([[1, 2, 3], [4, 5, 6]])
>>> type(x)
>>> x.shape
(2, 3)
>>> x.dtype
dtype('int32')
```
### 2.1 创建数组
#### array方法
- 将原始的list或者tuple转换成数组
```python
# 将列表转换成numpy数组
>>> a = np.array([1, 2, 3])
>>> print(a)
[1 2 3]
# 将元祖转换成numpy数组
>>> a = np.array((1.2, 2.3, 3.4))
>>> print(a)
[1.2 2.3 3.4]
```
- 将列表的列表转换成多维数组
```python
>>> a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> print(a)
[[1 2 3]
[4 5 6]
[7 8 9]]
```
#### 生成数组的特殊方法
- zeros生成全0数组
```python
# 元素默认是float64类型
>>> a = np.zeros((2, 3))
>>> print(a)
[[0. 0. 0.]
[0. 0. 0.]]
>>> a.dtype
dtype('float64')
# 可以指定元素类型
>>> a = np.zeros((2, 3), np.int32)
>>> print(a)
[[0 0 0]
[0 0 0]]
>>> a.dtype
dtype('int32')
```
- ones生成全1数组
```python
>>> a = np.ones((2, 3), np.int16)
>>> print(a)
[[1 1 1]
[1 1 1]]
>>> a.dtype
dtype('int16')
```
- empty创建未初始化的随机数组
```python
>>> a = np.empty([3, 3])
>>> print(a)
[[0.00000000e+000 0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000 3.16202013e-321]
[8.90104238e-307 1.24610383e-306 3.17320232e-317]]
```
- arange生成给定范围内的数组
```python
>>> a = np.arange(10, 30, 5)
>>> print(a)
[10 15 20 25]
>>> a.dtype
dtype('int32')
```
注意arange只生成一维数组,若想生成多维数组需要多次调用arange
#### random模块生成随机数组
### 2.2 数组的索引与切片
### 2.3 数组基本运算
### 2.4 数组维度变换
### 2.5 数组合并与切分
## 三、通用函数
## 四、常用操作