2009-07-09 47 views
1

我正在考虑几年前我在Python中编写的代码,在某些时候,它只能通过列表的索引获取一些元素。Pythonic获取矩阵的某些行的方法

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

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的替代品。

回答

4

它的切片语法值得关注NumPy。向下滚动链接页面,直到进入“索引,切片和迭代”。

+0

似乎有前途的,但没有什么像我在搜索:( – fortran 2009-07-09 18:04:21

4

这是一个明显的方式。所以,我会说它没有得到更多的Pythonic。

+0

我在想,也许有通过存取支架或类似的东西之间的指数序列的更好的方式: -/ – fortran 2009-07-09 16:51:23

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]] 
相关问题