NumPy常用函数

📅 2026/7/6 4:26:13
NumPy常用函数
ndarray 数组创建常用创建方法# 1. 一维数组a1np.array([1,2,3,4])# 2. 二维数组嵌套列表a2np.array([[1,2],[3,4]])# 3. 指定数据类型a3np.array([1.1,2.2],dtypenp.float32)# 4. 元组也可以a4np.array((5,6,7))快速生成固定值数组np.full(shape, fill_value)全部填充同一个数字#生成一维数组10个为0a5np.full(10,0)#生成二维数组4个为5a6np.full((2,2),5)序列数组np.arange(start, stop, step, dtype)# 1. 只给终点默认从0开始步长1print(np.arange(10))# [0 1 2 3 4 5 6 7 8 9]# 2. 起点终点print(np.arange(2,8))# [2 3 4 5 6 7]# 3. 起点终点步长print(np.arange(0,10,2))# [0 2 4 6 8]# 4. 支持小数print(np.arange(0,1,0.2))# [0. 0.2 0.4 0.6 0.8]随机数模块np.randomnp.random.rand(3)# 随机数范围[0,1)均匀分布 一维np.random.rand(2,3)# 2行3列随机浮点数设置随机数print(np.random.randint(0,5,size(2,2)))#生成二维数组0到5的随机数(不包含5)等比/等差数列logspacenp.logspace(start_exp, stop_exp, num, base10)含义生成 base 的 start_exp ~ stop_exp 次方共 num 个等比数c1np.logspace(0,2,5)print(c1)# [ 1. 3.16227766 10. 31.6227766 100. ]# 对应10^0, 10^0.5, 10^1, 10^1.5, 10^2linspacenp.linspace(start, stop, num)适合需要固定多少个点不用自己算步长c2np.linspace(0,2,5)print(c2)# [0. 0.5 1. 1.5 2. ]NumPy ndarray 常用数组属性举例数组importnumpyasnp arrnp.array([[1,2,3],[4,5,6]])维度 / 形状相关.ndim数组维度数量返回整数print(arr.ndim)# 2二维数组.shape每个维度的长度返回元组print(arr.shape)# (2,3) 2行3列# 单独取行数/列数print(arr.shape[0])# 行数 2print(arr.shape[1])# 列数 3.size数组总元素个数 各维度相乘print(arr.size)# 2*36.itemsize单个元素占用字节数# int64 每个数字占8字节print(arr.itemsize)# 8.nbytes整个数组占用总字节 size × itemsizeprint(arr.nbytes)# 6*848数据类型相关.dtype数组元素的数据类型print(arr.dtype)# int64.dtype.name类型名字符串print(arr.dtype.name)# int64补充虽然.dtype和.dtype.name直接打印出的都是int64但是他们的类型本质不一样print(type(arr.dtype))# class numpy.dtypes.Int64DTypeprint(type(arr.dtype.name))# class str数组变形.reshapearr.reshape(2,3)# 转为2行3列不修改原数组.resizearr.resize(2,3)# 原地修改形状.flattenarr.flatten()# 展平一维拷贝.ravelarr.ravel()# 展平优先视图节省内存数组类型转换.astypeprint(arrA.astype(np.float32))基本函数常量np.pi# 圆周率np.e# 自然常数np.nan# 空值np.inf# 无穷大舍入取整函数例子数组xnp.array([1.2,1.5,-1.5,2.7]).ceil向上取整np.ceil(x)# 向上取整 [2,2,-1,3].floor向下取整np.floor(x)# 向下取整 [1,1,-2,2].rint四舍五入np.rint(x)# 四舍五入 [1.,2.,-2.,3.].trunc截断小数np.trunc(x)# 截断小数 [1,1,-1,2].round指定小数位数np.round(x,1)# 指定小数位数平方、开方、绝对值anp.array([1,4,9,-2])np.abs(a)# 绝对值 [1,4,9,2]np.square(a)# 平方 [1,16,81,4]np.sqrt(a[a0])# 平方根负数会nannp.cbrt(np.array([-8,8]))# 立方根 [-2,2]指数 对数函数np.exp(x)# e^xnp.exp2(x)# 2^xnp.log([1,np.e,np.e**2])# 自然对数 lnnp.log10([1,10,100])# 以10为底np.log2([1,2,4])# 以2为底二元函数两个数组对应位置运算np.add(a,b)# 加 abnp.subtract(a,b)# 减 a-bnp.multiply(a,b)# 乘 a*bnp.divide(a,b)# 除 a/bnp.power(a,b)# 幂 a**bnp.maximum(a,b)# 对应位置取大np.minimum(a,b)# 对应位置取小np.mod(a,b)# 取余条件筛选三目选择条件成立取 x否则取 ynp.where(arr4,arr*2,arr10)print(res)# 大于4的数×2其余10聚合统计函数整数组 / 按轴计算matnp.array([[1,2,3],[4,5,6]])np.sum(mat)# 全部求和np.sum(mat,axis0)# 按列求和np.sum(mat,axis1)# 按行求和np.min(mat)# 最小值np.max(mat)# 最大值np.mean(mat)# 均值np.median(mat)# 中位数np.var(mat)# 方差np.std(mat)# 标准差np.argmax(mat)# 最大值索引np.argmin(mat)# 最小值索引# 一维anp.array([1,2,3])#cumsum()累积和#cumprod()累积乘积print(a.cumsum())# [1 3 6]print(a.cumprod())# [1 2 6]排序函数两种用法arr.sort()原地排序直接修改原数组无返回值np.sort(arr)返回排序后的新数组不改动原数组importnumpyasnp anp.array([3,1,4,2])# 不修改原数组s1np.sort(a)print(a)# [3 1 4 2]print(s1)# [1 2 3 4]# 原地修改a.sort()print(a)# [1 2 3 4]多维按轴排序 axismatnp.array([[3,1],[2,4]])# axis1 每行内部排序print(np.sort(mat,axis1))#[[1 3]#[2 4]]# axis0 每列内部排序print(np.sort(mat,axis0))#[[2 1]#[3 4]]去重函数np.unique函数参数return_countsTrue顺带统计每个元素出现次数return_indexTrue返回元素第一次出现的下标return_inverseTrue返回原数组映射到唯一值的索引numsnp.array([2,2,1,1,3,3,3])# 基础去重uniqnp.unique(nums)print(uniq)# [1 2 3]# 去重统计频次vals,cntnp.unique(nums,return_countsTrue)print(vals,cnt)NumPy 矩阵运算极易混淆运算* 和 np.multiply()对应元素相乘哈达玛积不是矩阵乘法 和 np.dot() 和 np.matmul()标准数学矩阵乘法元素相乘对位相乘Anp.array([[1,2],[3,4]])Bnp.array([[5,6],[7,8]])print(A*B)# [[ 5 12]# [21 32]]矩阵乘法线性代数标准乘法操作规则为A列必须等于B行输出结构为A行B列arrAnp.array([[1,0,2],[-1,3,1]])print(arrA)#[[ 1 0 2]#[-1 3 1]]arrBnp.array([[4,1],[0,5],[-2,3]])print(arrB)#[[ 4 1]#[ 0 5]#[-2 3]]# 操作规则为A列必须等于B行输出结构为A行B列print(arrA.dot(arrB))#[[ 0 7]#[-6 17]]计算过程