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