numpy基础教程
numpy基本概念
- nympy是一个在python中做科学计算的基础库,主要用于数值计算。也是大部分python科学计算库的基础库,多用于大型、多维数组上的执行数值运算。
- 特点:
- 快速,底层用c编写,并且释放了GIL;
- 方便;
- 科学计算的基础库
numpy基础
-
创建数组
-
import numpy as np
a = np.array([1, 2, 3, 4, 5])
b = np.array(range(1,6))
c = np.arange(1, 6)
-
numpy数组的类型
-
numpy数据类型
-
类型 | 类型代码 | 说明 |
---|
int8, uint8 | i1, u1 | 有符号和无符号的8位(1个字节)整形 | int16, uint16 | i2, u2 | 有符号和无符号的16位(2个字节)整形 | int32, uint32 | i4, u4 | 有符号和无符号的32位(4个字节)整形 | int64, uint64 | i8, u8 | 有符号和无符号的64位(8个字节)整形 | float16 | f2 | 半精度浮点数 | float32 | f4或f | 标准的单精度浮点数,与c的float兼容 | float64 | f8或d | 标准的双精度浮点数,与c的double和python的float对象兼容 | float128 | f16或g | 扩展精度浮点数 | complex64, complex128 | c8, c16 | 分别用两个32位、64位或128位浮点数表示的复数 | complex256 | c32 | 复数 | bool | ? | 存储True和False的布尔类型 |
-
数据类型的操作
-
数组的形状
-
数组和数的计算(a为数组)
- 加减法(a+1):数组中的每一项都加上常数项。
- 乘除法(a*3):数组中的每一项都乘以常数项。
-
数组和数组的计算(a和b满足条件才可以进行计算)
- 加减法(a+b):两个数组对应位置数字相加减。
- 乘除法(a*b):两个数组相对应位置数字相乘除。
-
广播原则
- 如果两个数组的后院维度(即从末尾开始计算的维度)的轴长度相符或其中一方的长度为 1,则认为它们是广播兼容的。广播会在缺失和(或)长度为一的维度上进行。
-
轴
- 轴在numpy中可以理解为方向,使用0,1,2,…数字表示,shape(2, 2)有0轴和1轴,对应三维数组shape(2, 2,3), 有0, 1, 2轴。
-
numpy读取数据
-
np.loadtxt(fname, dtype=np.float, delimiter=None, skiprows=0, usercols=None, unpack=False)
-
参数 | 解释 |
---|
fname | 文件、字符串或产生器,可以是.gz或bz2压缩文件 | dtype | 数据类型,可选。以什么数据类型读入数组中,默认为np.float | delimiter | 分割字符串,默认为任何空格 | skiprows | 跳过前x行,一般跳过表头行 | usecols | 读取指定的列,索引,元素类型 | unpack | 如果为True,数据转置;False,原始数据 |
-
numpy数组转置
-
numpy数组索引和切片
-
t[index]
t[:, column]
t[index1:index2]
t[:, column1:column2]
t[[index1, index2, ...], :]
t[:, [column1, column2, ...]]
-
numpy数组中数值的修改
-
t[index1:index2, :] = 0
t[t<10] = 0
np.where(t<10, 0, 10)
t.clip(10, 20)
-
numpy中特殊数值
- np.nan
- nan(NAN, Nan):not a nmber。
- 出现情况:读取文件为float时,如果有缺失,就会出现nan。
- np.nan特点:
- 两个nan是不相等的(np.nan != np.nan);
- nan和任何数值计算都为nan;
- 通过np.isnan(a)来判断。
- 处理方法:
- 缺失值过多,直接删除某行或者某列;
- 把缺失值替换为均值或者中值。
- np.inf
- inf(-inf, inf):表示无穷。
- 出现情况:一个数字除以0。python中直接报错,numpy为inf
numpy常用方法
-
数组拼接
-
行列数据交换
-
行交换
-
t[[1,2], :] = t[[2,1], :]
-
列交换
-
t[:, [1,2]] = t[:, [2,1]]
-
获取最大值最小值位置
-
创建一个全0数组
-
创建一个全1数组
-
创建对角线为1的方阵
-
随机数
-
参数 | 解释 |
---|
np.rand(d0, d1, …,dn) | 创建d0-dn维度的均匀分布的随机数组,浮点数,范围从0-1 | np.randn(d0, d1, …,dn) | 创建d0-dn维度的标准正态分布的随机数组,浮点数,平均数为0,标准差为1 | np.randint(low, high,(shape)) | 从给定上下限范围内选取随机整数,范围为low-high,形状为shape | np.uniform(low, high,(size)) | 产生具有均匀分布的数组,low为起始值,high为结束值,size为形状 | np.normal(loc, scale,(size)) | 从指定正态分布中随机抽取样本,均值是loc,标准差为scale,形状为size | np.seed(s) | 随机数种子,s为给定的种子值 |
numpy常用统计方法
-
求和
-
均值
-
中值
-
极值
-
极值表示最大值和最小值之差。 -
np.ptp(axis=None)
-
最大值
-
最小值
-
标准差
-
t.max(axis=None)
-
最小值
-
标准差
参考资料
[1] 黑马程序员的视频课程。
|