Python 如何在numpy数组中选择轴值
我是numpy的新用户,我使用的是numpy,其中提到要删除水平行,我们应该使用axis=0,但在numpy的其他文档中,它说水平轴是1。如果有人能让我知道我的理解有什么问题,那就太好了 从您提供的链接中,这里是numpy的摘录,这可能会给您带来一些困惑,并在下面进行澄清Python 如何在numpy数组中选择轴值,python,numpy,Python,Numpy,我是numpy的新用户,我使用的是numpy,其中提到要删除水平行,我们应该使用axis=0,但在numpy的其他文档中,它说水平轴是1。如果有人能让我知道我的理解有什么问题,那就太好了 从您提供的链接中,这里是numpy的摘录,这可能会给您带来一些困惑,并在下面进行澄清 摘录 摘录 第一个垂直向下跨行运行(轴0),而 第二次水平穿过柱(轴1) 我认为这种混淆源于第二段摘录中纵向和横向的词语。 第二个摘录的意思是,通过设置轴,可以决定移动哪个维度。例如,在二维矩阵中,axis=0对应于在行上
我认为这种混淆源于第二段摘录中纵向和横向的词语。 第二个摘录的意思是,通过设置轴,可以决定移动哪个维度。例如,在二维矩阵中,
axis=0
对应于在行上迭代(从而在数组上垂直移动),而axis=1
对应于
在列上迭代(这样就可以在数组上水平移动)。它并没有说轴=1
对应于OP所理解的水平轴
delete
函数遵循上述描述,实际上,通过使用np.delete(arr,1,axis=0)
,函数迭代行,并删除索引为1的行。相反,如果应删除列,则axis=1
。例如,在同一阵列上arr
>>> np.delete(arr, [0,1,4], axis=1)
array([[ 3, 4],
[ 7, 8],
[11, 12]])
其中,
delete
对列进行迭代,并删除索引为0、1的列,并且不删除任何其他内容,因为索引为4的列不存在。数组是在任何维度的网格中构造数字的系统方法。轴网方向具有标签,这些标签来自如何将新标注添加到轴网的约定
惯例如下:
最简单的网格是0维(0D)数组,它没有轴,只能容纳一个标量。这是一个0D阵列:
42
如果我们开始将标量放入一个列表中,就会得到一个1D数组。这个新网格只有一个轴,如果我们想用一个数字来标记这个轴,我们最好从一些简单的东西开始,比如axis=0
!一维阵列可以是:
# ----0--->
[42, π, √2]
现在我们要创建一个一维数组,它将为我们提供一个二维数组。横轴仍然是0,但新的纵轴将得到我们知道的下一个最低值,轴=1
。下面是它可能的样子:
# ----0---->
[[42, π, √2], # |
[1, 2, 3], # 1
[10, 20, 30]] # V
真正的美在于,它可以推广到无穷大。如果我们需要一个数字框,我们可以通过叠加二维数组来创建一个三维数组,而追踪框深度的方向自然必须是轴=2。如果我们想要一个4D阵列,我们只需要制作一个框列表(3D阵列),并使用沿轴=3的索引调用每个框。这可以永远持续下去
在NumPy中:
任何采用轴
-参数的函数/方法都使用此约定。对于二维数组,这意味着执行类似于np.delete(X[1,2,3],axis=0)
的操作将迭代沿第0轴拉伸的数组,以返回X
,而不返回第1、2和3行。同样的逻辑也适用于从数组中获取值
X[rows_along_0th_axis, columns_along_1st_axis, ..., vectors_along_nth_axis]
清晰直接。很好,很好!然而,这篇文章应该澄清,因为它可能会让人对numpy感到困惑。有两点需要修改。首先是约定:
axis=0
对应于迭代列的唯一情况是数组是单个列表(例如np.array([1,2,3,4])
)。通常,轴
对应于要迭代的实际维度。例如,axis=0
允许对行进行迭代,而axis=1
允许对列进行迭代。矩阵的形状是(num\u rows,num\u cols)
。第二,是对numpy
数组的访问:在一个矩阵上,可以使用索引轴0和列索引轴1访问行。谢谢您的评论!你说得对。你能解释一下你所说的“第二,是对numpy数组的访问:在一个矩阵上,行可以通过索引轴0访问,列可以通过索引轴1访问”是什么意思吗?然而,按照你所描述的X[index\u在第一轴上,index\u在第十轴上]
是正确的,从numpy中的轴的含义来看,它应该是相反的,即X[第0轴上的索引,第1轴上的索引]
。实际上,以np.array([1,2,3,4],[5,6,7,8],[9,10,11,12]])为例,它的形状是(3,4),因此在轴0上,最大索引是2(行),在轴1上,最大索引是3(列)。这一澄清是由于我评论中的第一点。
X[rows_along_0th_axis, columns_along_1st_axis, ..., vectors_along_nth_axis]