我正在考虑几年前我在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]
但我仍然想知道是否有更多的pythonic方式来做到这一点。有什么想法吗?
我想知道numpy o替代任何其他数组库的替代方案。
答案 0 :(得分:4)
这是一种明显的清洁方式。所以,我会说它没有比那更多的Pythonic。
答案 1 :(得分:4)
值得查看NumPy的切片语法。在链接页面中向下滚动,直到进入“索引,切片和迭代”。
答案 2 :(得分: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]]