在Python中从2D数组选择'area

6 投票
1 回答
16300 浏览
提问于 2025-04-19 06:01

有没有办法在Python中选择一个二维数组的特定“区域”?我可以用数组切片来提取一行或一列,但我不太确定怎么从一个大的二维数组中选出一个“子数组”。提前谢谢你!杰克

1 个回答

17

如果你在使用 numpy 这个库,你可以利用 numpy 更高级的切片功能来做到这一点,方法如下:

import numpy as np
x = np.array([[1, 2, 3, 4], 
              [5, 6, 7, 8], 
              [9, 10, 11, 12]])

print x[0:2,  2:4]
#       ^^^   ^^^
#       rows  cols

# Result:
[[3 4]
 [7 8]]

(更多信息可以查看 numpy 的文档

如果你不想使用 numpy,你也可以用列表推导式来实现,方法是:

x = [[1, 2, 3, 4], 
     [5, 6, 7, 8], 
     [9, 10, 11, 12]]

print [row[2:4] for row in x[0:2]]
#          ^^^      ^^^ select only rows of index 0 or 1
#          ^^^ and only columns of index 2 or 3

# Result:
[[3, 4], 
 [7, 8]]

撰写回答