首页 > 解决方案 > 理解 NumPy 数组的切片

问题描述

我还没有理解以下程序的输出:

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 到第 4 列的交集。在该逻辑中,输出应为:

 2   3  4
 6   7  8
10  11 12
14  15 16

我在这里想念什么?

标签: pythonnumpyslice

解决方案


这是一个只需要理解切片符号的经典案例。

在括号内,每个维度都有切片:

arr[dim1_start:dim1_end, dim2_start, dim2_end]

对于上述表示法,切片将包括从dimX_start、 到 且不包括的元素dimX_end

所以,对于你写的:myNumpyArray[0:3, 1:3]

您选择了行0, 1, and 2 (not including 3)和列1 and 2 (not including 3)


我希望这有助于解释你的结果。


对于您期望的结果,您需要更多类似的东西:

print(myNumpyArray[0:4, 1:4])

有关切片的更多信息,您可以访问numpy 文档或查看不久前发布的类似问题


推荐阅读