首先,做您想要的事情的简单方法:
Y = X[:,4:]
现在,之前尝试使用numpy而不执行此操作的原因与数组在Python中以及实际上在大多数编程语言中的工作方式有关。当您编写类似的内容时a[4]
,这将访问数组的第五个元素,而不是让您查看原始数组的某些部分。因此,例如,如果a
是一个数字数组,a[4]
则将只是一个数字。如果a
是二维数组,即有效地是数组数组,a[4]
则将是一维数组。基本上,访问数组元素的操作返回的维数比原始数组小一。
现在,Python包含了一个叫做“切片符号”的东西,它用冒号表示,这是访问数组元素的另一种方式。它不返回 元素 (维数比原始数组小一个的 元素 ),而是返回原始数组的一部分的副本。本质上,a:b
代表索引a
(包括)到b
(排除)处的所有元素的列表。任一a
或b
或两者都可以被省略,在这种情况下,片去一路到阵列的相应的端部。
这对于您的情况意味着在编写时X[:,4]
,您将具有一个切片符号和一个常规索引符号。切片符号表示沿第一个维度的所有索引(由于数组有两行,因此分别为0和1),而4表示沿第二个维度的第五个元素。正则索引的每个实例基本上都会将返回对象的维数减一,因此,由于它X
是一个2D数组,并且有一个正则索引,因此得到一维结果。Numpy只是将一维数组显示为行向量。如果想获得与开始时相同的尺寸,那么诀窍就是使用所有切片索引,就像我在本文顶部示例中所做的那样。
如果要提取总列数超过5的东西的第五列,则可以使用X[:,4:5]
。如果要查看第3-4行和第5-7列,则可以执行X[3:5,5:8]
。希望你能明白。