numpy深度学习常用函数及参数理解(axis, keepdims)
axis:
以axis=0为例,则沿着第0个下标(最左边的下标)变化的方向进行操作,
也就是将除了第0个下标外,其他两个下标都相同的部分分成一组,然后再进行操作
例如一个3*3的二维数组A(3, 3)
如果定义axis = 0,也就是说除了第一个下标可以不同,其他下标必须都相同,那么用C++的数组表示,分组如下:
第一组:A[0][0], A[1][0], A[2][0]
第二组:A[0][1], A[1][1], A[2][1]
第三组:A[0][2], A[1][2], A[2][2]
三维数组一样,就是axis指定的维度不一样,其他两个维度下标要一样。
当axis=-1时,-1代表倒数第一个,加入矩阵shape=[3,4,5],对于该矩阵也就是等于axis=2。
sum:
例如一个a:100*10
np.exp(a):100*10(相当对每个数进行e次幂)
np.sum(np.exp(a)):无结果,因为不知道是在哪个维度求和
np.sum(np.exp(a),axis=0):10(每列求和,最后变成长度为10的一维数组)
np.sum(np.exp(a),axis=0,keepdims=True):1*10(取共10列的每一列最大值)
np.sum(np.exp(a),axis=1):100(每行求和,最后变成长度为100的一维数组)
np.sum(np.exp(a),axis=1,keepdims=True):100*1 (共取100行的每一行最大值,但仍保留数组形状)
验证:
import numpy as np x = np.random.rand(3,4) print(x) print(np.exp(x)) print(np.sum(np.exp(x))) print(np.sum(x,axis=0)) print(np.sum(x,axis=0,keepdims=True)) print(np.sum(x,axis=1)) print(np.sum(x,axis=1,keepdims=True))
结果:
[[0.50487326 0.1234154 0.97036974 0.78872956] [0.16459544 0.84769524 0.78609429 0.91375372] [0.67774643 0.63490272 0.20362158 0.65253967]] [[1.65677553 1.13135429 2.63891998 2.20059893] [1.17891608 2.33426074 2.19480738 2.49366551] [1.96943447 1.88683857 1.22583418 1.92041186]] 22.83181752378712 [1.34721514 1.60601336 1.9600856 2.35502295] [[1.34721514 1.60601336 1.9600856 2.35502295]] [2.38738796 2.71213869 2.1688104 ] [[2.38738796] [2.71213869] [2.1688104 ]]
原文链接:https://blog.csdn.net/WILDCHAP_/article/details/107630484
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步