numpy
isinstance(v, (int, float)) 是用来判断变量 v 是否是「内建的」整数或浮点数类型。
NumPy有自己的一套数值类型,如numpy.int32,numpy.int64
虽然看起来像普通的int/float,但它们并不是Python内置的int/float的子类。
也就是说,NumPy 的标量(scalar)类型不会被 isinstance(…, (int, float)) 识别成普通数值。
NumPy 数组的布尔值取决于所有元素,Python 不知道该按 “全部为真” 还是 “部分为真” 判断。一个数组代表的是”数值矩阵”,不是普通容器。
正确判断 NumPy 数组是否为空的写法
import numpy as np
arr = np.array([])
if arr.size == 0:
print(“数组为空”)
else:
print(“数组非空”)
.size 属性返回数组元素总数
.size==0时,数组为空
np.loadtxt(fname,delimiter)从纯文本文件中读取数字数据并转换成numpy数组,fname文件名或文件路径,delimiter文件中的数值分隔符,空格分隔可以省略
NPZ文件包含对象数组,而NumPy的默认设置(allow_pickle=False)出于安全原因阻止加载此类文件,改为True即可。
data=np.load(fname, allow_pickle=True)
NumPy常用函数和方法
| 功能分类 | 方法示例 | 说明 |
|---|---|---|
| 数组属性 | .shape |
数组形状 |
.dtype |
数据类型 | |
.size |
元素总数 | |
ndim |
数组维度 | |
itemsize |
每个元素占字节数 | |
| 数学运算 | np.add(a,b) |
加法,支持广播 |
np.subtract(a,b) |
减法 | |
np.multiply(a,b) |
乘法 | |
np.divide(a,b) |
除法 | |
np.power(a,b) |
幂运算 | |
np.sqrt(a) |
平方根 | |
np.exp(a) |
指数 | |
np.log(a) |
自然对数 | |
np.round(a,decimals=0) |
四舍五入 | |
| 聚合函数 | np.sum(a,axis=None) |
求和 |
np.mean(a,axis=None) |
均值 | |
np.median(a,axis=None) |
中位数 | |
np.std(a,axis=None) |
标准差 | |
np.var(a,axis=None) |
方差 | |
np.min(a,axis=None) |
最小值 | |
np.max(a,axis=None) |
最大值 | |
np.argmax(a,axis=None) |
最大值索引 | |
np.argmin(a,axis=None) |
最小值索引 | |
| 线性代数 | np.dot(a,b) |
点积/矩阵乘法 |
np.matmul(a,b) |
矩阵乘法 | |
np.transpose(a) |
转置 | |
np.linalg.inv(a) |
矩阵求逆 | |
np.linalg.det(a) |
行列式 | |
| 形状变换 | np.reshape(a,newshape) |
重塑数组 |
np.flatten(a) |
展平数组 | |
np.concatenate((a,b),axis=0) |
拼接数组 | |
np.split(a,indices_or_sections) |
分割数组 | |
| 随机数 | np.random.rand(d0,d1,...) |
均匀分布随机数 |
np.random.randn(d0,d1,...) |
标准正态分布随机数 | |
np.random.randint(low,high,size) |
整数随机数 | |
| 数组生成 | np.arange(start,stop,step) |
按步长生成等差序列 |
| 复制与唯一 | np.copy(a) |
复制数组 |
np.unique(a) |
找唯一值 | |
| 数组构造 | np.zeros(shape) |
生成全0数组 |
np.ones(shape) |
生成全1数组 | |
np.full(shape,fill_value) |
生成指定值填充的数组 | |
np.eye(N) |
生成单位矩阵(对角为1) | |
np.identity(n) |
生成n阶单位矩阵 | |
| 转换函数 | np.asarray(a) |
转换为数组(避免复制) |
np.array(a) |
创建数组 | |
np.eye(N,M) |
创建N行M列正对角线为1,余者为0的二维数组 | |
np.ones((N,M)) |
创建N行M列的全1二维数组 | |
np.ones((N,M,K)) |
创建3行3列对角线为N,M,K的二维数组 | |
np.random.randn(N,M) |
创建N行M列服从正态分布的二维随机数组 | |
np.random.randint(Min,Max,(N,M)) |
创建N行M列二维随机整数数组,元素最小值Min最大值Max |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 梦游!
评论
