Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在numpy数组中选择轴值_Python_Numpy - Fatal编程技术网

Python 如何在numpy数组中选择轴值

Python 如何在numpy数组中选择轴值,python,numpy,Python,Numpy,我是numpy的新用户,我使用的是numpy,其中提到要删除水平行,我们应该使用axis=0,但在numpy的其他文档中,它说水平轴是1。如果有人能让我知道我的理解有什么问题,那就太好了 从您提供的链接中,这里是numpy的摘录,这可能会给您带来一些困惑,并在下面进行澄清 摘录 摘录 第一个垂直向下跨行运行(轴0),而 第二次水平穿过柱(轴1) 我认为这种混淆源于第二段摘录中纵向和横向的词语。 第二个摘录的意思是,通过设置轴,可以决定移动哪个维度。例如,在二维矩阵中,axis=0对应于在行上

我是numpy的新用户,我使用的是numpy,其中提到要删除水平行,我们应该使用axis=0,但在numpy的其他文档中,它说水平轴是1。如果有人能让我知道我的理解有什么问题,那就太好了

从您提供的链接中,这里是numpy的摘录,这可能会给您带来一些困惑,并在下面进行澄清

  • 摘录

  • 摘录
  • 第一个垂直向下跨行运行(轴0),而 第二次水平穿过柱(轴1)


    我认为这种混淆源于第二段摘录中纵向和横向的词语。 第二个摘录的意思是,通过设置轴,可以决定移动哪个维度。例如,在二维矩阵中,
    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]