Python 二维 numpy.ndarray 不带逗号的切片
Python 2D numpy.ndarray slicing without comma
最近有人告诉我通过
提取二维numpy.ndarray
的前两列
firstTwoCols = some2dMatrix[:2]
这个符号来自哪里,它是如何工作的?
我只熟悉逗号分隔的切片,比如
twoCols = some2dMatrix[:,:2]
逗号前的 :
表示获取所有行,逗号后的 :2
表示获取第 0 至但不包括第 2 列。
firstTwoCols = some2dMatrix[:2]
这将只提取前 2 行和所有列。
twoCols = some2dMatrix[:,:2] 将提取所有行的前两列。
不确定我是否理解问题但是...
如果你这样做:
>>> 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]
,它将 select 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 会将其视为等同于所有进一步的切片为 :
,因此
arr[:2]
相当于
arr[:2, :]
对于二维数组。
最近有人告诉我通过
提取二维numpy.ndarray
的前两列
firstTwoCols = some2dMatrix[:2]
这个符号来自哪里,它是如何工作的?
我只熟悉逗号分隔的切片,比如
twoCols = some2dMatrix[:,:2]
逗号前的 :
表示获取所有行,逗号后的 :2
表示获取第 0 至但不包括第 2 列。
firstTwoCols = some2dMatrix[:2]
这将只提取前 2 行和所有列。
twoCols = some2dMatrix[:,:2] 将提取所有行的前两列。
不确定我是否理解问题但是...
如果你这样做:
>>> 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]
,它将 select 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 会将其视为等同于所有进一步的切片为 :
,因此
arr[:2]
相当于
arr[:2, :]
对于二维数组。