最近有人告诉我通过
提取2Dnumpy.ndarray
的前两列
firstTwoCols = some2dMatrix[:2]
这种符号来自何处以及如何运作?
我只熟悉逗号分隔切片,如
twoCols = some2dMatrix[:,:2]
逗号前的:
表示获取所有行,逗号后的:2
表示列0到但不包括2。
答案 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]])