Numpy(基础包)
主要功能:
- 一个多维数组结构,高效且节省空间
- 无需循环对整个数组进行快速运算的函数
- 线性代数、随机数生成和傅里叶变换功能
安装
pip install numpy
引用: import numpy as np
ndarray-多维数组对象
创建ndarray
np.array(list)
与list的区别:
- ndarray改值不改大小,数组间对应位置的元素可进行运算
- list改大小不改值
比如
a = np.array([i for i in range(10)])
b = [i for i in range(10)]
a*3
>> array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27])
b*3
>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
常用属性
| 属性 | 注释 |
|---|---|
| dtype | 数组中数据类型 |
| size | 数组中元素个数 |
| shape | 用元组表示数组,比如二维数组是(n*m),n行m列 |
| T | 数组的转置,比如行变成列,列变成行 |
| ndim | 数组的维数 |
常用方法
| 方法 | 注释 |
|---|---|
| array() | 创建数组 |
| zeros() | 创建全0的数组 |
| ones() | 创建全1的数组 |
| empty() | 创建空数组(随机值) |
| arange() | 根据数据范围创建数组 |
| linspace() | 线性创建数组,范围数据平均分成n份,步长一致,呈线性递增或者递减 |
| eye() | 创建线性代数的单位矩阵 |
| reshape() | 根据数组形状排列数组 |
索引和切片
多维数组的索引
列表式写法:a[2][3]
新式写法:a[2,3]
多维数组的切片
新式写法:a[0:2,0:3]
布尔型索引
列表式写法:list(filter(lambda x:x>5,a))
新式写法:a[(a>5) & (a%2==0)],加了括号才能当and使用,否则会成为位运算的与
a[(a>5) | (a%2==0)]
底层原理:
- 对每一个元素进行判断,返回一个布尔数组
- 返回对应位置为True的元素的数组
a = array([0,1,2,3])
a[[True,False,False,True]]
>> array([0,3]) # 只显示True的元素
花式索引
a[[1,3,4,6,7]]:返回数组中与其中列表中的数组一致的元素
多维数组写法:a[[1,3],:][:,[1,3]],选择第一行与第三行,第一列与第三列的数据
像sql语句中的select
通用函数
np.一元函数
abs,sqrt,exp,log,floor(向下取整),ceil(向上取整),round(四舍五入),trunc(截断取整),rint(取整),modf(把小数和整数分开存储),isnan(是否不是数),isinf(是否无穷大)
np.二元函数
以下方法都需要shape相同
add,substract,multiply,divide,power,mod,maximum,minium(每个对应位置的元素进行比较)
属性方法:统计
| 方法 | 描述 |
|---|---|
| sum() | 求和 |
| mean() | 求平均 |
| var() | 求方差,表示数据的离散程度,越小越稳定 |
| std() | 标准差,越小 |
| max() | 最大值 |
| min() | 最小值 |
| argmax() | 最大值下标 |
| argmin() | 最小值下标 |
随机生成
| 方法 | 描述 |
|---|---|
| np.random.randint() | 给定shape产生随机数组(0~1)注意参数是size,下同 |
| np.random.rand() | 给定shape产生随机整数数组 |
| np.random.choice() | 给定shape产生随机选择数组 |
| np.random.uniform() | 给定shape产生随机数组 |
| np.random.shuffle() | 与random.shuffle()相同 |

浙公网安备 33010602011771号