numpy 学习汇总14-多维数组的轴sum(axis) ( 基础学习 tcy)
发布日期:2021-06-29 14:47:29 浏览次数:2 分类:技术文章

本文共 1792 字,大约阅读时间需要 5 分钟。

numpy中多维数组的轴sum(axis)  2018/11/21

前言:

什么叫做轴呢,官方文档的说明不好理解,简单说吧数组有多少个中括号就叫做几轴,a.ndim一般不等a.shape[0]如 a=np.arange(80).reshape(20,2,2)  a.ndim# 3        a.shape# (20, 2, 2)

本人在网上搜索很多,没有见到很好的解释,一般很难理解。仔细看测试程序你能够理解轴的计算原理,见解有限,欢迎

各位大侠提供更好的解释方法。

=====================================================================================

1.axis 运算总结

       一元运算通过axis沿指定轴操作

    1).a.ndim=2

        axis=0相当于垂直方向各个元素;

        axis=1相当于水平方向上处理各个元素;

    2).a.ndim=3

axis=0结果:

       rst[m][n]=a[0][m][n]+a[1][m][n] +a[2][m][n]                       i=l_a

axis=1结果:

       rst[m][n]=a[m][0][n]+a[m][1][n] +a[m][2][n] +a[m][3][n]             i=m_a

axis=2结果:

       rst[m][n]=a[m][n][0]+a[m][n][1] +a[m][n][2] +a[m][n][3]+ a[m][n][4]   i=n_a

====================================================================================

axis sum总结:(3轴)更多轴你可以做类似推理,比较复杂,在此就不写测试代码。

   a.shape=(l_a , m_a, n_a)

   rst.shape=(m,n) 

   axis=0  (m_a, n_a);

   axis=1  (l_a, n_a);

   axis=2  (l_a, m_a)

====================================================================================

2运算详解:

3.测试程序

def isum(a,axes=0):    i0,m0,n0=a.shape    if axes == 0:        rst = np.zeros((m0, n0))    elif axes == 1:        rst = np.zeros((i0, n0))    else:        rst = np.zeros((i0, m0))    for i in range(i0):        for m in range(m0):            for n in range(n0):                if axes==0:                    rst[m][n] += a[i][m][n]                elif axes==1:                    rst[i][n] += a[i][m][n]                else:                    rst[i][m] += a[i][m][n]    return rst

isum(a)

Out[44]: 
array([[ 60.,  63.,  66.,  69.,  72.],
       [ 75.,  78.,  81.,  84.,  87.],
       [ 90.,  93.,  96.,  99., 102.],
       [105., 108., 111., 114., 117.]])

isum(a,1)

Out[45]: 
array([[ 30.,  34.,  38.,  42.,  46.],
       [110., 114., 118., 122., 126.],
       [190., 194., 198., 202., 206.]])

isum(a,2)

Out[46]: 
array([[ 10.,  35.,  60.,  85.],
       [110., 135., 160., 185.],
       [210., 235., 260., 285.]])

 

 

转载地址:https://chunyou.blog.csdn.net/article/details/84327488 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:numpy 学习汇总15 -广播 ( 基础学习 tcy)
下一篇:numpy 学习汇总13-numpy.linalg线性代数 ( 基础学习 tcy)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月23日 06时03分17秒