Python 2D numpy.ndarray切片没有逗号

时间:2015-06-01 21:36:13

标签: python numpy slice

最近有人告诉我通过

提取2D numpy.ndarray的前两列
firstTwoCols = some2dMatrix[:2]

这种符号来自何处以及如何运作?

我只熟悉逗号分隔切片,如

twoCols = some2dMatrix[:,:2]

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

3 个答案:

答案 0 :(得分:4)

firstTwoCols = some2dMatrix [:2]

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

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

答案 1 :(得分:2)

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

arr[:2]

相当于

arr[:2, :]

表示2D数组。

答案 2 :(得分:-1)

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

如果你这样做:

>>> 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]])