np.average用法

本文深入解析了使用numpy库处理矩阵时,如何通过不同的axis参数计算矩阵的平均值。包括矩阵级别的平均、行级别的平均和元素级别的平均,展示了axis参数在处理多维数据时的重要作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

>>> img0
array([[[ 0,  1,  2,  3,  4],
        [ 5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14],
        [15, 16, 17, 18, 19]],

       [[20, 21, 22, 23, 24],
        [25, 26, 27, 28, 29],
        [30, 31, 32, 33, 34],
        [35, 36, 37, 38, 39]],

       [[40, 41, 42, 43, 44],
        [45, 46, 47, 48, 49],
        [50, 51, 52, 53, 54],
        [55, 56, 57, 58, 59]]])
       
       # 矩阵级别的平均
>>> np.average(img0, axis=0)
array([[20., 21., 22., 23., 24.],
       [25., 26., 27., 28., 29.],
       [30., 31., 32., 33., 34.],
       [35., 36., 37., 38., 39.]])      
       
       # 行级别的平均, 行与行之间的比较, 也就是竖着的元素之间的比较,e.g. a[0] 代表某一行, a[1]代表相邻的下一行, a[0][j] 与a[1][j]的比较, j属于(0, n),  看起来就像是竖着比较。
>>> np.average(img0, axis=1)
array([[ 7.5,  8.5,  9.5, 10.5, 11.5],
       [27.5, 28.5, 29.5, 30.5, 31.5],
       [47.5, 48.5, 49.5, 50.5, 51.5]])

# 元素级别的平均,看起来像是处理是处理每一行中的所有元素。

axis=1 与axis=2 之间的不同之处:


axis=1时是行与行之间某个相同位置的元素的处理
axis=2 是某一行内元素的处理



如果不指定axis, 就是全局平均
>>> np.average(img0)
29.5

import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def LoadFile(filename): data = np.loadtxt(filename, delimiter=',', unpack=True, usecols=(0, 1, 2)) x = np.transpose(np.array(data[0])) y = np.transpose(np.array(data[1])) z = np.transpose(np.array(data[2])) return x, y, z if __name__ == '__main__': area, room, price = LoadFile('ex1data2.txt') num=len(area) #样本数量 x0=np.ones(num) #归一化处理,这里使用线性归一化 x1=(area-np.average(area))/(area.max()-area.min()) x2=(room-np.average(room))/(room.max()-room.min()) #堆叠属性数组,构造属性矩阵 #从(16,)到(16,3),因为新出现的轴是第二个轴所以axis为1 X=np.stack((x0,x1,x2),axis=1) #print(X) #得到形状为一列的数组 Y=price.reshape(-1,1) #print(Y) learn_rate=0.001 #设置超参数 iter=1500 #迭代次数 display_step=50 #每50次迭代显示一下效果 #设置模型参数初始值 W=[[0], [0], [0]] #训练模型 mse=[] for i in range(0,iter+1): #求偏导 dL_dW=np.matmul(np.transpose(X),np.matmul(X,W)-Y) #XT(XW-Y) #更新模型参数 W=W-learn_rate*dL_dW #得到估计值 PRED=np.matmul(X,W) #计算损失(均方误差) Loss=np.mean(np.square(Y-PRED))/2 mse.append(Loss) if i % display_step==0: print("i:%i,Loss:%f"%(i,mse[i])) xx0=np.ones(1) xx1=(1650.0-np.average(area))/(area.max()-area.min()) xx2=(3.0-np.average(room))/(room.max()-room.min()) XX=[xx0,xx1,xx2] print("房屋面积为1650平方英尺房间数量为3时预测房屋的价格:%f"%(np.matmul(XX,W)))
03-25
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值