我还不明白以下程序的输出:
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
我错过了什么?你知道吗
这是一个只需要理解切片表示法的典型案例。你知道吗
在括号内,每个维度都有一个切片:
对于上面的表示法,切片将包括从
dimX_start
开始的元素,直到dimX_end
,但不包括。你知道吗所以,对于你写的:
myNumpyArray[0:3, 1:3]
您选择了行
0, 1, and 2 (not including 3)
和列1 and 2 (not including 3)
我希望这有助于解释你的结果。你知道吗
对于您期望的结果,您需要更类似于:
有关切片的更多信息,您可以访问numpy docs或查看不久前发布的a similar question。你知道吗
结束索引(在
0:3
和1:3
中的3)是独占的,而不是包含的,而开始索引(0
和1
)实际上是包含的。如果结束索引是包含的,那么输出将如您所期望的那样。但因为它们是独占的,所以实际上只获取第0、1和2行以及第1和2列。输出是这些输出的交集,相当于您看到的输出。你知道吗如果您试图获取所需的数据,可以执行
myNumpyArray[:, 1:]
。:
简单地获取数组的所有元素(在您的例子中,是数组的第一维),而1:
获取从索引1开始的数组的所有内容,忽略第0位的数据。你知道吗相关问题 更多 >
编程相关推荐