代码之家  ›  专栏  ›  技术社区  ›  Uyghur Lives Matter

从三维数组中提取第n个值

  •  0
  • Uyghur Lives Matter  · 技术社区  · 6 年前

    >>> arr = numpy.arange(36).reshape(3, 4, 3)
    >>> arr
    array([[[ 0,  1,  2],
            [ 3,  4,  5],
            [ 6,  7,  8],
            [ 9, 10, 11]],
    
           [[12, 13, 14],
            [15, 16, 17],
            [18, 19, 20],
            [21, 22, 23]],
    
           [[24, 25, 26],
            [27, 28, 29],
            [30, 31, 32],
            [33, 34, 35]]])
    

    如何提取 n 每个最里面行的th值?

    如果我要取索引1的值,如何才能得出以下结果?

    array([[ 1,  4,  7, 10],
           [13, 16, 19, 22],
           [25, 28, 31, 34]])
    

    array([ 1,  4,  7, 10, 13, 16, 19, 22, 25, 28, 31, 34])
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Dani Mesejo    6 年前

    import numpy
    
    arr = numpy.arange(36).reshape(3, 4, 3)
    
    print(arr[:, :, 1])
    

    输出

    [[ 1  4  7 10]
     [13 16 19 22]
     [25 28 31 34]]
    

    或者,

    print(arr[:, :, 1].flatten())
    

    输出

    [ 1  4  7 10 13 16 19 22 25 28 31 34]
    

    您可以找到有关numpy索引的更多信息 here .

    更新

    正如@madpysicalist在评论中提到的,您可以使用 ravel arr[..., 1] 访问最后一个索引,称为省略号。根据文件:

    省略号扩展到:个对象的数目以进行选择 与x.ndim长度相同的元组

    进一步

        2
  •  -1
  •   Alejandro Molinas    6 年前

    要从这样的数组中提取元素,可以执行以下操作:

    >>> import numpy as np   
    >>> arr = np.arange(36).reshape(3, 4, 3)
    >>> arr[:,:,1]
    array([[ 1,  4,  7, 10],
           [13, 16, 19, 22],
           [25, 28, 31, 34]])
    

    >>> arr.flatten()
    array([ 1,  4,  7, 10, 13, 16, 19, 22, 25, 28, 31, 34])