Python 理解NumPy阵列的切片
我还没有理解以下程序的输出:Python 理解NumPy阵列的切片,python,numpy,slice,Python,Numpy,Slice,我还没有理解以下程序的输出: import numpy as np myList = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]] myNumpyArray = np.array(myList) print(myNumpyArray[0:3, 1:3]) 输出 [[ 2 3] [ 6 7] [10 11]] 我所知道的是
import numpy as np
myList = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]]
myNumpyArray = np.array(myList)
print(myNumpyArray[0:3, 1:3])
输出
[[ 2 3]
[ 6 7]
[10 11]]
我所知道的是所有行和第二到第四列的交点。在该逻辑中,输出应为:
2 3 4
6 7 8
10 11 12
14 15 16
我在这里遗漏了什么?这是一个只需要理解切片表示法的经典案例 在括号内,有每个标注的切片:
arr[dim1\u开始:dim1\u结束,dim2\u开始,dim2\u结束]
对于上述表示法,切片将包括从dimX\U开始
到dimX\U结束
的元素
那么,对于您所写的:myNumpyArray[0:3,1:3]
您选择了行0、1和2(不包括3)
和列1和2(不包括3)
我希望这有助于解释你的结果
对于您期望的结果,您需要更像:
print(myNumpyArray[0:4,1:4])
有关切片的更多信息,您可以访问或查看前一段时间发布的。结束索引(0:3和1:3中的3)是独占的,不包括在内,而开始索引(0和1
)实际上包括在内。如果结束索引是包含的,那么输出将如您所期望的那样。但因为它们是独占的,所以实际上只获取第0行、第1行和第2行以及第1列和第2列。输出是这些的交集,这相当于您看到的输出
如果您试图获取所需的数据,可以执行myNumpyArray[:,1:]
。:
只抓取数组的所有元素(在您的例子中,是数组的第一维度),而1:
抓取从索引1开始的数组的所有内容,忽略第0位的数据 0:3
表示选择从0
到3-1=2
的所有行,1:3
表示选择从1
到3-1=2
的所有列。您需要关心未包含的最后一个值。这可能有助于您复制