【问题标题】:Python 2D numpy.ndarray slicing without commaPython 2D numpy.ndarray 切片不带逗号
【发布时间】:2015-06-01 21:36:12
【问题描述】:

最近有人告诉我提取 2D numpy.ndarray by 的前两列

firstTwoCols = some2dMatrix[:2]

这个符号来自哪里,它是如何工作的?

我只熟悉逗号分隔的切片

twoCols = some2dMatrix[:,:2]

逗号前的: 表示获取所有行,逗号后的:2 表示从第 0 列到第 2 列,但不包括第 2 列。

【问题讨论】:

    标签: python numpy slice


    【解决方案1】:

    firstTwoCols = some2dMatrix[:2]

    这将只提取包含所有列的前 2 行。

    twoCols = some2dMatrix[:,:2] 将提取所有行的前 2 列。

    【讨论】:

      【解决方案2】:

      您描述的语法没有提取前两列;它提取前两行。如果您指定的切片少于数组的维度,NumPy 会将其视为等同于所有其他切片为:,因此

      arr[:2]
      

      等价于

      arr[:2, :]
      

      对于二维数组。

      【讨论】:

        【解决方案3】:

        我不确定我是否理解这个问题,但是......

        如果你这样做:

        >>> Matrix = [[x for x in range(1,5)] for x in range(5)] 
        >>> Matrix
        [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
        

        Matrix[:2],它会选择Matrix[1, 2, 3, 4], [1, 2, 3, 4]中的前两个列表。但如果你这样做:

        >>> Matrix[:,:2]
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        TypeError: list indices must be integers, not tuple
        

        但是,如果您使用 Numpy,请执行以下操作:

        Matrix = np.array(Matrix)
        
        >>>Matrix[:, :2]
        array([[1, 2],
               [1, 2],
               [1, 2],
               [1, 2],
               [1, 2]])
        

        【讨论】:

        • 逗号分隔的切片是 NumPy 语法。
        • @user2357112 哦酷!我不知道......我更新了我的答案。谢谢!
        猜你喜欢
        • 2012-04-15
        • 1970-01-01
        • 2013-06-26
        • 1970-01-01
        • 2016-02-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多