9

我想在 Python 中提取二维列表(=列表列表)的一部分。Mathematica 用的比较多,写起来很方便

matrix[[2;;4,10;;13]] 

这将提取矩阵的第 2 行和第 4 行以及第 10 和第 13 列之间的部分。

在 Python 中,我只是使用了

[x[firstcolumn:lastcolumn+1] for x in matrix[firstrow:lastrow+1]]

是否还有更优雅或更有效的方法来做到这一点?

4

1 回答 1

20

你想要的是numpy 数组和 slice 运算符:

>>> import numpy

>>> a = numpy.array([[1,2,3],[2,2,2],[5,5,5]])
>>> a
array([[1, 2, 3],
       [2, 2, 2],
       [5, 5, 5]])

>>> a[0:2,0:2]
array([[1, 2],
       [2, 2]])
于 2012-06-10T17:51:57.183 回答