对于矩阵操作中axis的理解,以及axis=-1的解释

在读此篇文章前请先理解三维数组中的通道概念((36条消息) 【numpy】argmax参数辨析(axis=0,axis=1,axis=-1)_胡侃有料的博客-CSDN博客_axis=1

一、二维理解axis

axis二维

坐标

二维数据拥有两个轴:第0轴(axis=0)沿着行的垂直往下,第1轴(axis=1或axis=-1)沿着列的方向水平延伸。

也许简单的来记就是axis=0代表跨行(down),而axis=1代表跨列(across)

二、高维理解axis

这里解释一下三维,更高维也就都能理解了

设axis=i,则沿着第i个下标变化的方向进行操作!

embeddings是一个shape=[3,4,5]的矩阵

3维矩阵

对矩阵分别按轴(0,1,-1)取最大值所在下标

按轴取最大值所在下标

结果如下

结果

看懂为什么是这个结果吗?现在从头开始解释一下

首先把embedding的坐标标出来

坐标

以axis=0为例,则沿着第0个下标(最左边的下标)变化的方向进行操作,也就说其他除了第0轴之外,第1轴,第2轴的坐标必须一样才能一并操作。

坐标按axis=0分组

axis=0,就是沿着第0轴变化(第0轴坐标取值是0,1,2),其他轴坐标一样的分为一组。比如,a000,a100,a200为一组(因为他们三其他轴坐标取值一样都是00);a001,a101,a201是一组,a024,a124,a224 是一组。那这么算的话,共分为4*5组。所以按照axis=0进行操作,得到的矩阵大小为[4,5]。

坐标按axis=1分组

axis=1,就是沿着第1轴变化(第1轴坐标取值是0,1,2,3),其他轴坐标一样的分为一组。比如,a000,a010,a020,a030为一组;a103,a113,a123,a133 是一组。那这么算的话,共分为3*5组。所以按照axis=1进行操作,得到的矩阵大小为[3,5]。

坐标按axis=2分组

axis=-1即axis=2,就是沿着第2轴变化(第2轴坐标取值是0,1,2,3,4),其他轴坐标一样的分为一组。比如,a000,a001,a002,a003,a004为一组;a120,a121,a122,a123,a124 是一组。那这么算的话,共分为3*4组。所以按照axis=-1进行操作,得到的矩阵大小为[3,4]。

所以核心原则就是:

1、先分组再操作。

2、分组时,axis=i轴的坐标值变化,其他轴的坐标值均一样的,被分为一组。

猜你喜欢

转载自blog.csdn.net/qq_42514371/article/details/123705554