Python的Numpy数组运算中,有时会出现按axis进行运算的情况,如

>>> x = np.array([[1, 1], [2, 2]])
>>> x
array([[1, 1],
[2, 2]])
>>> x.sum(axis=0)%x.sum(axis=1)

自己初学时,容易搞混axis=0到底代表的是按行运算还是按列运算,而且这仅是针对二维数组情况,更高维数组就无法仅仅用行列来区分了。
经过自己的研究和实践后,谈一下自己的理解,读者如有不赞同的地方,欢迎交流探讨。


numpy数组按axis 运算时,参数axis 代表的是数组的维数序号,如x.sum(axis=0) 代表按第一维(对于二维数组即按列)求和,x.sum(axis=1 代表按第二维(对于二维数组即按行)求和。
这里的第一维、第二维如何去理解?我的理解是看numpy数组中[] 的嵌套关系。第一维就是最外层的[] ,第二维则是次外层的[],高于二维情形依次类推。下面用实际代码说明。

%二维情形
>>> x = np.array([[1, 1], [2, 2]])
>>> x
array([[1, 1],
[2, 2]])
>>> x.sum(axis=0) # columns (first dimension)
array([3, 3])
>>> x[:, 0].sum(), x[:, 1].sum()
(3, 3)
>>> x.sum(axis=1) # rows (second dimension)
array([2, 4])
>>> x[0, :].sum(), x[1, :].sum()
(2, 4)
%三维情形
>>> x=np.arange(1,9).reshape(2,2,2);x
array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
>>> x.sum(axis=0) %按第一维求和,把最外层'[]'里面的元素(二维数组)求和
array([[ 6, 8],
[10, 12]])
>>> x.sum(axis=1) %按第二维求和,把次外层'[]'里面的元素(一维数组)求和
array([[ 4, 6],
[12, 14]])
>>> x.sum(axis=2) %按第三维求和,把第三层'[]'里面的元素求和
array([[ 3, 7],
[11, 15]])
>>> x.sum(axis=2)[0,1] %上面矩阵中第一行第二个元素
7

对Numpy数组按axis运算的理解的更多相关文章

  1. NumPy 中的集合运算

    怎样快速找出两个数组中相同的元素? numpy.isin(element,test_elements,assume_unique = False,invert = False ) 计算test_ele ...

  2. Numpy 数组简单操作

    创建一个2*2的数组,计算对角线上元素的和 import numpy as np a = np.arange(4).reshape(2,2) print (a) #[[0 1] # [2 3]] n1 ...

  3. 【学习笔记】Tensor多维数组和axis的理解

    Tensor多维数组和axis的理解 今天在编写程序的时候一直对于axis=0或等于1搞不明白,这样对于整个numpy或者是tensorflow的基本运算和数据处理都会很模糊,所以花了一些时间来搞清楚 ...

  4. [开发技巧]·Numpy中对axis的理解与应用

    [开发技巧]·Numpy中对axis的理解与应用 1.问题描述 在使用Numpy时我们经常要对Array进行操作,如果需要针对Array的某一个纬度进行操作时,就会用到axis参数. 一般的教程都是针 ...

  5. numpy 数组集合运算及下标操作

    1. 数组的集合运算 1.1. 并集 np.union1d(a,b)计算数组的并集: In [1]: import numpy as np In [2]: a = np.array([1,2,3]) ...

  6. numpy数组的运算

    numpy数组的运算 数组的乘法 >>> import numpy as np >>> arr=np.array([[1,2,3],[4,5,6]]) >&g ...

  7. Numpy入门(二):Numpy数组索引切片和运算

    在Numpy中建立了数组或者矩阵后,需要访问数组里的成员,改变元素,并对数组进行切分和计算. 索引和切片 Numpy数组的访问模式和python中的list相似,在多维的数组中使用, 进行区分: 在p ...

  8. 玩转NumPy数组

    一.Numpy 数值类型 1.前言:Python 本身支持的数值类型有 int(整型, long 长整型).float(浮点型).bool(布尔型) 和 complex(复数型).而 Numpy 支持 ...

  9. numpy数组、向量、矩阵运算

    可以来我的Github看原文,欢迎交流. https://github.com/AsuraDong/Blog/blob/master/Articles/%E6%9C%BA%E5%99%A8%E5%AD ...

随机推荐

  1. Android——加载模式

    <activity android:name=".MainActivity" android:launchMode="standard"><! ...

  2. 关于报错“syntax error near unexpected token `”和回车换行

    本来是很简单一个事情,转过来是因为打字机这事比较有趣…… http://blog.csdn.net/xyp84/archive/2009/08/11/4435899.aspx 摘要一下: 回车 换行 ...

  3. elasticsearch -- 问题纪录

    报错1: [1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [6 ...

  4. 记一次线上Kafka消息堆积踩坑总结

    2018年05月31日 13:26:59 xiaoguozi0218 阅读数:2018更多 个人分类: 大数据   年后上线的系统,与其他业务系统的通信方式采用了第三代消息系统中间件Kafka.由于是 ...

  5. Go语言入门系列2 基本语法

    get download and install packages and dependencies install = compile and install packages and depend ...

  6. php 转码

    //$names = iconv("UTF-8", "gb2312", $name); //等同于javascript encodeURI("电影&q ...

  7. Hibernate Annotations 注解

    Hibernate Annotations 注解 对于org.hibernate.annotations与org.hibernate.persistence,它的注释比如Columns,可是不知道怎么 ...

  8. OSG 中 相交測试 模块 工作流程及原理

    主要涉及三个类: 1. osgUtil::PolytopeIntersector // 详细不同算法实现类 2. osgUtil::IntersectionVisitor //用来遍历节点树的每一个节 ...

  9. 在mac下使用ppk文件ssh到远程主机

    You can ssh directly from the Terminal on Mac, but you need to use a .PEM key rather than the putty  ...

  10. PHPmailer发送邮件时的常见问题及解决办法

    来源:http://www.chinastor.com/a/jishu/mailserver/0G392262014.html 使用PHPmailer发送邮件时的常见问题总结: 一,没有定义发送邮箱$ ...