1

我在考虑几年前用 Python 编写的代码,在某些时候它必须按索引获取列表列表的一些元素。

我记得我做过这样的事情:

def getRows(m, row_indices):
    tmp = []
    for i in row_indices:
        tmp.append(m[i])
    return tmp

从那以后我学到了更多东西,我会使用这样的列表理解:

[m[i] for i in row_indices]

但我仍然想知道是否有更蟒蛇的方式来做到这一点。有任何想法吗?

我还想知道 numpy 或任何其他数组库的替代方案。

4

3 回答 3

4

这是一种明显的清洁方式。所以,我想说没有比这更 Pythonic 的了。

于 2009-07-09T16:47:34.807 回答
4

NumPy的切片语法值得一看。在链接页面中向下滚动,直到到达“索引、切片和迭代”。

于 2009-07-09T16:58:03.070 回答
2

正如 Curt 所说,Numpy 似乎是一个很好的工具。这是一个例子,

from numpy import *

a = arange(16).reshape((4,4))
b = a[:, [1,2]]
c = a[[1,2], :]

print a
print b
print c

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[ 1  2]
 [ 5  6]
 [ 9 10]
 [13 14]]
[[ 4  5  6  7]
 [ 8  9 10 11]]
于 2009-07-09T20:06:33.547 回答