对Numpy数组按axis运算的理解
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运算的理解的更多相关文章
- NumPy 中的集合运算
怎样快速找出两个数组中相同的元素? numpy.isin(element,test_elements,assume_unique = False,invert = False ) 计算test_ele ...
- Numpy 数组简单操作
创建一个2*2的数组,计算对角线上元素的和 import numpy as np a = np.arange(4).reshape(2,2) print (a) #[[0 1] # [2 3]] n1 ...
- 【学习笔记】Tensor多维数组和axis的理解
Tensor多维数组和axis的理解 今天在编写程序的时候一直对于axis=0或等于1搞不明白,这样对于整个numpy或者是tensorflow的基本运算和数据处理都会很模糊,所以花了一些时间来搞清楚 ...
- [开发技巧]·Numpy中对axis的理解与应用
[开发技巧]·Numpy中对axis的理解与应用 1.问题描述 在使用Numpy时我们经常要对Array进行操作,如果需要针对Array的某一个纬度进行操作时,就会用到axis参数. 一般的教程都是针 ...
- numpy 数组集合运算及下标操作
1. 数组的集合运算 1.1. 并集 np.union1d(a,b)计算数组的并集: In [1]: import numpy as np In [2]: a = np.array([1,2,3]) ...
- numpy数组的运算
numpy数组的运算 数组的乘法 >>> import numpy as np >>> arr=np.array([[1,2,3],[4,5,6]]) >&g ...
- Numpy入门(二):Numpy数组索引切片和运算
在Numpy中建立了数组或者矩阵后,需要访问数组里的成员,改变元素,并对数组进行切分和计算. 索引和切片 Numpy数组的访问模式和python中的list相似,在多维的数组中使用, 进行区分: 在p ...
- 玩转NumPy数组
一.Numpy 数值类型 1.前言:Python 本身支持的数值类型有 int(整型, long 长整型).float(浮点型).bool(布尔型) 和 complex(复数型).而 Numpy 支持 ...
- numpy数组、向量、矩阵运算
可以来我的Github看原文,欢迎交流. https://github.com/AsuraDong/Blog/blob/master/Articles/%E6%9C%BA%E5%99%A8%E5%AD ...
随机推荐
- EmWebAdmin 生成流程分析
继上一篇的简略的说明 EmWebAdmin 的地址以后下载,生成之后,这一篇讲一下该模板的生成流程 // 上一篇地址: http://www.cnblogs.com/chenfulin5/p/6856 ...
- imx6 socketcan 发送问题
参考cansend 的方法进行发送can 数据. cansend 的生成,请查考:http://www.cnblogs.com/chenfulin5/p/6797756.html cansend 代码 ...
- Okra框架(二) 搭建Socket服务器
本文将介绍使用Okra框架帮助开发者快速搭建高性能应用程序Socket服务端. 博主接触的网络游戏(包含但不限于网页, 手机)的服务端通信使用的协议基本上就Socket,Http或是WebSocket ...
- exchange邮箱系统增加验证码机制
首先背景是exchange的邮箱系统没有后台源代码.因为这个原因,生成验证码的机制放在aspx的runat="sever"后台代码里面. 首先需要找到iis中logon.aspx文 ...
- Could not contact Selenium Server; have you started it on 'localhost:4444'
今天学习selenium RC例子的时候遇到一个问题:java.lang.RuntimeException: Could not contact Selenium Server; have you s ...
- 一个区域只能放置一个组件,如果想在一个区域放置多个组件就需要使用Panel来装载
五种布局管理器: Flow Layout(流式布局):按照组件添加到容器中的顺序,顺序排放组件位置.默认为水平排列,如果越界那么会向下排列.排列的位置随着容器大小的改变而改变. Panel默认的布局管 ...
- WPF datagrid 弹出右键菜单时先选中该项
private void datagrid_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) { ...
- Maven项目POM.xml详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- ionic ui 框架
直接看着这写就行了 http://ionicframework.com/docs/components/
- sys.argv 详细用法
sys.argv 用于获取命令行参数,用法如下: [root@localhost ~]$ cat 1.py #!/usr/bin/env python #-*- coding:utf-8 -*- im ...