深入理解numpy库中的axis(python中的轴) | 您所在的位置:网站首页 › python中type1J代表什么 › 深入理解numpy库中的axis(python中的轴) |
文章目录
Python中的axis如何理解axisaxis的含义笛卡尔坐标多维数组的元素指定多维数组指定轴
axis的取值
例子例一axis=0和axis=-3例二axis=1和axis==-2例三axis=2
结语
Python中的axis
在使用numpy库时,有许多地方会出现axis的踪影,如求最大最小值、排序等情况。最常见的可能要数下面几个 numpy.maxnumpy.minnumpy.maxnumpy.argsort下文我们就以numpy.max为例来详细讲解axis 如何理解axisaxis的理解主要分两点:axis的含义、 axis的取值 axis的含义 笛卡尔坐标从笛卡尔坐标开始,我们将能对axis有一个直观的认识。 上图中我们想要指定(2, 3)这个点的位置,首先指定第一条轴即x轴,然后指定第二条轴即y轴。 多维数组的元素指定对于多维数组来说,我们指定元素的方式和笛卡尔坐标如出一辙——通过不断指定元素在每条轴上的位置,只不过在多维数组中,位置是有限离散的整数 多维数组指定轴上一小节我们已经形象地将多维数组指定元素和笛卡尔坐标轴指定位置联系了起来,下面我们就来指定多维数组的轴。 对于矩阵 [ 1 2 3 4 ] \begin{bmatrix} 1&2\\ 3&4 \end{bmatrix} [1324] 第0轴是沿着1–>3方向; 第1轴是沿着1–>2方向。 那指定轴是什么意思呢? 通俗的将,我们指定某个轴就是指定沿着这个方向将数据点塌缩为一个(塌缩只是为了形象化,排序等情况指定轴则不是如此),如对上面这个矩阵指定axis=0求max: import numpy x = numpy.array([[1, 2], [3, 4]]) print(numpy.max(x, axis=0))其输出将会为 [ 3 4 ] \begin{bmatrix} 3&4 \end{bmatrix} [34] 这十分容易理解:我们沿着1–>3的方向塌缩,则1和3里面取最大值显然就是3, 2和4取最大值为4. axis的取值看到这里你可能会问,我已经理解了axis是什么了,取值无非是有几维就有几个,有什么好说的? 事实上,由于python语言的一些特性,我们的取值将不限于0, 1, 2, 3这些,指定轴还可以为负数! 如果不能对应正负数,那将会造成很多困惑。我们还是以上一小节中的矩阵为例说明。 import numpy x = numpy.array([[1, 2], [3, 4]]) print(numpy.max(x, axis=-2))其输出将会为 [ 3 4 ] \begin{bmatrix} 3&4 \end{bmatrix} [34] 为什么这里将轴指定为-2和0会得到相同的输出呢?这里和python中序列的索引有极大的关系。在python序列中,正索引是从0到length-1, 而负索引则是从-1到-length。 在我们的例子中,指定轴为-1即指定为1则为1–>2方向,而指定轴为-2即指定为0则为1–>3方向了。 例子举一个三维数组的例子: import numpy x = numpy.array([[[1, 2], [3, 4]], [[4, 3], [2, 1]]]) print(x)在上面这个三维数组中,显然有三个轴,即三个axis。下面我们对三个轴都求最大值 例一axis=0和axis=-3 print(numpy.max(x, axis=0)) print(all(numpy.max(x, axis=0)==numpy.max(x, axis=-3)))输出为 [[4, 3], [3, 4]] True 这里的第0轴可能需要仔细理解一下,并不是指定矩阵求某个矩阵的最大值,而是将两个矩阵的每个元素相对比。 例二axis=1和axis==-2 print(numpy.max(x, axis=1)) print(all(numpy.max(x, axis=1)==numpy.max(x, axis=-2)))输出为 [[3, 4], [4, 3]] True 例三axis=2 print(numpy.max(x, axis=2)) print(all(numpy.max(x, axis=2)==numpy.max(x, axis=-1)))输出为 [[2, 4], [4, 2]] True 结语感谢阅读,愿你有个灿烂的前程。 |
CopyRight 2018-2019 实验室设备网 版权所有 |