[开发技巧]·Numpy中对axis的理解与应用
[开发技巧]·Numpy中对axis的理解与应用
1.问题描述
在使用Numpy时我们经常要对Array进行操作,如果需要针对Array的某一个纬度进行操作时,就会用到axis参数。
一般的教程都是针对二维矩阵操作axis,当axis为0时,计算方向时列,当axis为1时计算方向为行。
但是这样的描述并不能让我们真正理解axis的含义。下面我一个三维Array,来带领大家深入理解axis
2.实战讲解
>>> import numpy as np
>>> arrays = np.arange(0,12).reshape([2,3,2])
>>> arrays
array([[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]]])
>>> np.sum(arrays)
66
>>> np.sum(arrays,axis=0)
array([[ 6, 8],
[10, 12],
[14, 16]])
>>> np.sum(arrays,axis=1)
array([[ 6, 9],
[24, 27]])
>>> np.sum(arrays,axis=2)
array([[ 1, 5, 9],
[13, 17, 21]])
为什么是这个结果呢,笔者来帮大家说梳理一下:
首先我们新建了一个shape(2,3,3)的Array
1.用np.sum(arrays)时,计算的是所有元素的和。
2.用np.sum(arrays,axis = 0)时,我们可以这样理解,以最外面的[ ]为一个list,对里面两个元素(每个元素都是二维Array)进行相加求和,所以得到的Array和相加元素形状相同。
2.用np.sum(arrays,axis = 1)时,以中间的[ ]为一个list,对里面三个元素(每个元素都是一维Array)进行相加求和,所以得到的Array和相加元素形状相同,但是由于有两个中间的[ ],所以把两个拼接在了一起。
3.用np.sum(arrays,axis = 2)时,以最里面的[ ]为一个list,对里面两个元素(每个元素都是一个人说)进行相加求和,所以得到的Array和相加元素形状相同,但是由于有两个中间的[ ],每个中间的[ ]包含三个[ ],最终shape为(2,3)。
类似其实我们在使用下标选取内容时使用相同的概念
>>> import numpy as np
>>> arrays = np.arange(0,12).reshape([2,3,2])
>>> arrays
array([[[ 0, 1],
[ 2, 3],
[ 4, 5]],
[[ 6, 7],
[ 8, 9],
[10, 11]]])
>>> arrays[0,:,:]
array([[0, 1],
[2, 3],
[4, 5]])
>>> arrays[:,0,:]
array([[0, 1],
[6, 7]])
>>> arrays[:,:,0]
array([[ 0, 2, 4],
[ 6, 8, 10]])
>>>
大家可以根据笔者上面讲述的,好好理解分析一下为什么是这样。
hope this helps
[开发技巧]·Numpy中对axis的理解与应用的更多相关文章
- [开发技巧]·Numpy广播机制的深入理解与应用
[开发技巧]·Numpy广播机制的深入理解与应用 1.问题描述 我们在使用Numpy进行数据的处理时,经常会用到广播机制来简化操作,例如在所有元素都加上一个数,或者在某些纬度上作相同的操作.广播机制很 ...
- [开发技巧]·TensorFlow中numpy与tensor数据相互转化
[开发技巧]·TensorFlow中numpy与tensor数据相互转化 个人主页–> https://xiaosongshine.github.io/ - 问题描述 在我们使用TensorFl ...
- numpy 中的axis轴问题
在numpy库中,axis轴的问题比较重要,不同的值会得到不同的结果,为了便于理解,特此将自己的理解进行梳理 为了梳理axis,借助于sum函数进行! a = np.arange(27).reshap ...
- 关于NumPy中数组轴的理解
参考原文链接(英文版):https://www.sharpsightlabs.com/blog/numpy-axes-explained/:中文版:https://www.jianshu.com/p/ ...
- Javascript开发技巧(JS中的变量、运算符、分支结构、循环结构)
一.Js简介和入门 继续跟进JS开发的相关教程. <!-- [使用JS的三种方式] 1.HTML标签中内嵌JS(不提倡使用): 示例:<button onclick="javas ...
- 对NumPy中dot()函数的理解
今天学习到numpy基本的运算方法,遇到了一个让我比较难理解的问题.就是dot函数是如何对矩阵进行运算的. 一.dot()的使用 参考文档:https://docs.scipy.org/doc/num ...
- numpy中的convolve的理解
https://blog.csdn.net/u011599639/article/details/76254442 函数 numpy.convolve(a, v, mode=‘full’),这是num ...
- [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve)
[开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve) 1.滑动平均概念 滑动平均滤波法(又称递推平均滤波法),时把连续取N个采样值看成一个队列 ,队列的长度固定为N ...
- [开发技巧]·pandas如何保存numpy元素
[开发技巧]·pandas如何保存numpy元素 1.问题描述 在开发的过程中遇到一个问题,就是需要把numpy作为pandas的一个元素进行保存,注意不是作为一列元素.但是实践的过程中却不顺利, ...
随机推荐
- 用java代码将从数据库中取出的具有父子关系的数据转成json格式
思路:①.取出数据中的所有父节点放入一个集合中②.取出数据中所有为该父节点的子节点放入另一个集合中③.用到迭代的方法将子节点一层一层的遍历工具类:package com.assasion.test;i ...
- 【贪心+背包】BZOJ1334 [Baltic2008]Elect
Description 从N个数中选出任意个数且和尽量大,但要满足去掉任意一个和就小于总和的一半.n<=300, ai<=1e5. Solution 这个条件其实就是 去掉选出的最小的一个 ...
- bzoj 1076 奖励关 状压+期望dp
因为每次选择都是有后效性的,直接dp肯定不行,所以需要逆推. f[i][j]表示从第i次开始,初始状态为j的期望收益 #include<cstdio> #include<cstrin ...
- Python Django 2.2登录功能_2
#Now 让我们继续对上篇的登录进行操作 #对于csrf,以后再开篇章记录 #修改index.html <form method="post" action="/l ...
- gitlab pipelines job执行时日志较大报错
问题描述 gitlab pipelines job执行时日志较大报错 Job's log exceeded limit of 4194304 bytes. 解决方案 出现该问题主要是因为gitlab ...
- 基于 ReactJS 开发简单的可视化业务编辑器 01
线上可以看的,跟github上的代码不一样的:https://whensea.com/wfd/ 程序中经常有一些业务需要定制化,我定制化这些业务的方式主要是基于工作流.配置等方式.由于个人水平限制并不 ...
- 一致性 Hash 算法的实际应用
前言 记得一年前分享过一篇<一致性 Hash 算法分析>,当时只是分析了这个算法的实现原理.解决了什么问题等. 但没有实际实现一个这样的算法,毕竟要加深印象还得自己撸一遍,于是本次就当前的 ...
- C# 将object对象转换为实体对象
C# 将object对象转换为实体对象.一共两种方法. 第一种方法,代码如下: /// <summary> /// 将object对象转换为实体对象 /// </summary> ...
- 将一个html文件引入另一个html文件的div中
width="" height=""属性可根据要求自己设定
- HTML 练习on方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...