2017-07-14 78 views
4

的矩阵填充的矩阵:从我想从索引的阵列填充的矩阵指数

import numpy as np 

indx = [[0,1,2],[1,2,4],[0,1,3],[2,3,4],[0,3,4]] 
x = np.zeros((5,5)) 
for i in range(5): 
    x[i,indx[i]] = 1. 

结果是:

array([[ 1., 1., 1., 0., 0.], 
     [ 0., 1., 1., 0., 1.], 
     [ 1., 1., 0., 1., 0.], 
     [ 0., 0., 1., 1., 1.], 
     [ 1., 0., 0., 1., 1.]]) 

如所希望的。

问题

有没有办法做到这一点在纯Python/numpy的无循环?

回答

4

使用advanced-indexing后intialization - (3分钟以内)

x[np.arange(len(indx))[:,None], indx] = 1 
+0

那是快,谢谢!我无法自己找到这个.. :) – Tool