Numpy介绍
Numpy是Numerical Python的简写,是Python数值计算的基石。它提供多种数据结构、算法以及大部分涉及Python数值计算所需的接口。Numpy还包括其他内容:
- 快速、高效的多维数组对象ndarray
- 基于元素的数组计算或数组间数学操作函数
- 用于读写硬盘中基于数组的数据集的工具
- 线性代数操作、傅里叶变换以及随机数生成
- 成熟的C语言API、允许Python扩展和本地的C或C++代码访问Numpy的数据结构和计算设施。
除了Numpy赋予Python的快速数组处理能力之外,Numpy的另一个主要用途是在算法和库之间作为数据传递的数据容器。对于数值数据,Numpy数组能够比Python内建数据结构更为高效地存储和操作数据。此外,用底层语言编写的库,例如C或Fortran编写的库,可以在Numpy数组存储的数据上直接操作,而无需将数据复制到其他内存中后操作。因此,许多Python的数值计算工具将Numpy数组作为基础数据结构,或与Numpy进行无缝互操作。
Numpy基础知识
数组生成函数表:
函数名 | 描述 |
---|---|
array | 将输入数据(可以是列表、元组、数组以及其他序列)转换为ndarray,如不显式指明数据类型,将自动推断;默认复制所有的输入数据 |
asarray | 将输入转换为ndarray,但如果输入已经是ndarray则不在复制 |
arange | Python内建函数range的数组版,返回一个数组 |
ones | 根据给定形状和数据类型生成全1数组 |
ones_like | 根据所给的数组生成一个形状一样的全1数组 |
zeros | 根据给定形状和数据类型生成全0数组 |
zeros_like | 根据所给的数组生成一个形状一样的全0数组 |
empty | 根据给定形状生成一个没有初始化数值的空数组 |
empty_like | 根据所给数组生成一个形状一样但没有初始化数值的空数组 |
full | 根据给定的形状和数据类型生成指定数值的数组 |
full_like | 根据所给的数组生成一个形状一样但内容是指定数值的数组 |
eye, identity | 生成一个N*N特征矩阵(对角线位置都是1,其余位置是0) |
Numpy数据类型表:
类型 | 类型代码 | 描述 |
---|---|---|
int8,uint8 | i1,u1 | 有符号和无符号的8数位整数 |
int16,uint16 | i2,u2 | 有符号和无符号的16数位整数 |
int32,uint32 | i4,u4 | 有符号和无符号的32数位整数 |
int64,uint64 | i8,u8 | 有符号和无符号的64数位整数 |
float16 | f2 | 半精度浮点数 |
float32 | f4或f | 标准单精度浮点数;兼容C语言float |
float64 | f8或d | 标准双精度浮点数;兼容C语言double和Python float |
float128 | f16或g | 拓展精度浮点数 |
complex64,complex128,complex256 | c8,c16,c32 | 分别基于32位、64位、128位浮点数的复数 |
bool | ? | 布尔值,存储True或False |
object | 0 | Python object类型 |
string_ | S | 修正的ASCII字符串类型,例如生成一个长度为10的字符串类型,使用“S10” |
unicode_ | U | 修正的Unicode类型,生成一个长度为10的Unicode类型,使用“U10” |
一元通用函数:
函数名 | 描述 |
---|---|
abs、fabs | 逐元素地计算整数、浮点数或复数的绝对值 |
sqrt | 计算每个元素的平方根(arr ** 0.5相等) |
square | 计算每个元素的平方(arr ** 2相等) |
exp | 计算每个元素的自然指数值e^x |
log、log10、log2、log1p | 分别对应:自然对数(e为底)、对数10为底、对数2为底、log(1+x) |
sign | 计算每个元素的符号值:1(正数)、0(0)、-1(负数) |
ceil | 计算每个元素的最高整数值(即大于等于给定数值的最小整数) |
floor | 计算每个元素的最小整数值(即小于等于给定数值的最大整数) |
rint | 将元素保留到整数位,并保持dtype |
modf | 分别将数组的小数部分和整数部分按数组形式返回 |
isnan | 返回数组中的元素是否是一个NaN(不是一个数值),形式为布尔值数组 |
isfinite、isinf | 分别返回数组中的元素是否有限(非inf、非NaN),是否无限的,形式为布尔值数组 |
cos、cosh、sin、sinh、tan、tanh | 常规的双曲三角函数 |
arccos、arccosh、arcsin、arcsinh、arctan、arctanh | 反三角函数 |
logical_not | 对数组的元素按位取反(与~arr效果一致) |
二元通用函数:
函数名 | 描述 |
---|---|
add | 将数组的对应元素相加 |
subtract | 在第二个数组中,将第一个数组中包含的元素去除 |
multiply | 将数组的对应元素相乘 |
divide,floor_divide | 除或整除(放弃余数) |
power | 将第二个数组的元素作为第一个数组对应元素的幂次方 |
maximum、fmax | 逐个元素计算最大值,fmax忽略NaN |
minimum,fmin | 逐个元素计算最小值,fmin忽略NaN |
mod | 将元素的求模计算(即求出发的余数) |
copysign | 将第一个数组的符号值改为第二个数组的符号值 |
greater、greater_equal、less、less_equal、equal、not_equal | 将元素逐个的比较,返回布尔值数组(与数学操作符>、>=、<、<=、==、!=效果一致) |
logical_and,logical_or,logical_xor | 进行逐个元素的逻辑操作(与逻辑操作符&、或、^效果一致) |