【发布时间】:2015-03-25 18:53:30
【问题描述】:
假设我们有以下矩阵:
M=[[ 19. 1. 8.]
[ 3. 6. 900.]
[ 4. 11. 44.]
[ 2. 50. 12.]]
我们有以下向量:
V=[0,3,2]
我们要构建以下矩阵:
P=[[ 19. 50. 44.]
[ 19. 50. 44.]
[ 19. 50. 44.]
[ 19. 50. 44.]]
基本上,我们希望使用 V 的每个元素作为 M 的索引,即 M[V[0],0] 为 19,M[V[1],1] 为 50,M[V[2] ,2] 是 44。使用 numpy 而没有 for 循环的效率是多少?
我可以这样做:
temp=M[V[np.arange(v.shape[0])],np.arange(v.shape[0])]
P=np.tile(temp,(M.shape[0],1))
但是有更好的方法吗?
【问题讨论】:
标签: python numpy matrix scipy vectorization