博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
numpy的axis的理解和检验
阅读量:5149 次
发布时间:2019-06-13

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

原文: 

一、官网的定义:

https://docs.scipy.org/doc/numpy/user/quickstart.html

In NumPy dimensions are called axes.

For example, the coordinates of a point in 3D space [1, 2, 1] has one axis. That axis has 3 elements in it, so we say it has a length of 3. In the example pictured below, the array has 2 axes. The first axis has a length of 2, the second axis has a length of 3.

[[ 1., 0., 0.], [ 0., 1., 2.]]

其实,可以这么理解。维度(dimension) D和数组A,D[axis]和A[i] 。是不是大概懂了,axis对应第几维度,与数组的下标的作用差不多。但是axis有点区别的。既然axis是下标那么就有范围:

[-维度,维度),如上例子axis的取值范围 [-2,2),记住不包括2。

维度与axis的对应关系:axis是从最外层的 [] 数起来的,如上的例子,axis=0:第二维,axis=1:第一维。

二、验证:

1 # 产生24个[0,50)的随机整数,维度为32 x = np.random.RandomState(5).randint(50, size=[2, 3, 4])3 print(x.ndim, x.shape, x.size)4 print("x:\n", x)

选一个能够使用到axis的函数:这里选用numpy.amax()(选出最大的元素),https://docs.scipy.org/doc/numpy/reference/generated/numpy.amax.html#numpy.amax

为了方便理解,先从最内层开始

1 print("x[0][0]:\n", x[0][0])2 print("axis=2: \n", np.amax(x, 2))

 

print("x[0]:\n", x[0])print("axis=1: \n", np.amax(x, 1))

 

1 print("x:\n", x)2 print("axis=0: \n", np.amax(x, 0))

很显然,从axis=2,axis=1都挺好理解,但是axis=0就有点困惑了,而且这个仅仅是三维而已,那么四维、五维呢。

但是其实仔细观察axis=2的第一个数字54是怎么来的呢?是从x[0][0][0]—x[0][0][4]比较而得。因此一共有3*4个。

同理axis=1时,比较的就是:x[0][0][0]—x[0][3][0]共3*5个

同理axis=2时,比较的是:x[0][0][0]—x[2][0][0],共4*5个

现在,是不是就对不同的axis的输出的形状或者说排列有一定的了解了?而且是不是体会到axis的作用了?我可是烦死那么多方括号了!!

 三、总结

最直观的:函数所选的axis的值,就表明 x[][][] 的第几个方块号,从0开始,代表第一个[ ],即x[ ] [ ] [ ]

不足或者错误之处,欢迎指正!

1 import numpy as np 2  3 # 产生60个[0,60)的随机整数,维度为3 4 x = np.random.RandomState(5).randint(60, size=[3, 4, 5]) 5 print(x.ndim, x.shape, x.size) 6 print("x:\n", x) 7 print("x[0][0]:\n", x[0][0]) 8 print("axis=2: \n", np.amax(x, 2)) 9 10 print("x[0]:\n", x[0])11 print("axis=1: \n", np.amax(x, 1))12 13 print("x:\n", x)14 print("axis=0: \n", np.amax(x, 0))15 print("\n", np.amin(x, 0))16 for i in range(4):17     print(x[0][i][1])
全部代码

 

转载于:https://www.cnblogs.com/ppes/p/9461246.html

你可能感兴趣的文章
windows下用tcc编译Lua
查看>>
execl导入导出
查看>>
phpcms和php格式化时间戳
查看>>
thinkphp的空控制器和空操作以及对应解决方法
查看>>
[笔记] SQL性能优化 - 常用语句(一)
查看>>
openvino安装踩坑记
查看>>
html03
查看>>
LINQ语法详解
查看>>
The folder is already a source folder
查看>>
App 组件化/模块化之路——Android 框架组件(Android Architecture Components)使用指南
查看>>
Java里的日期和时间学习
查看>>
securecrt 上传下载
查看>>
公共技术点之 Java 反射 Reflection
查看>>
DICOM:DICOM3.0网络通信协议
查看>>
免费好用的web应用托管平台-续
查看>>
分享:FIFO 同步、异步以及Verilog代码实现
查看>>
二分查找算法
查看>>
《构建之法》读书笔记2
查看>>
enum 枚举一般用法 dotnet
查看>>
SVM理解
查看>>