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]]
通用函数
一元函数
abs,sqrt,exp,log,floor(向下取整),ceil(向上取整),round(四舍五入),trunc(截断取整),rint(取整),modf(把小数和整数分开存储),isnan(是否不是数),isinf(是否无穷大)
二元函数
add,substract,multiply,divide,power,mod,maximum,minium(每个对应位置的元素进行比较)
统计
方法 | 描述 |
---|---|
sum() | 求和 |
mean() | 求平均 |
var() | 求方差,表示数据的离散程度,越小越稳定 |
std() | 标准差,越小 |
max() | 最大值 |
min() | 最小值 |
argmax() | 最大值下标 |
argmin() | 最小值下标 |
随机生成
方法 | 描述 |
---|---|
np.random.randint() | 给定shape产生随机数组(0~1) |
np.random.rand() | 给定shape产生随机整数数组 |
np.random.choice() | 给定shape产生随机选择数组 |
np.random.uniform() | 给定shape产生随机数组 |
np.random.shuffle() | 与random.shuffle()相同 |