我想从一个索引数组中填充一个矩阵:
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 中执行此操作?
最佳答案
使用advanced-indexing
初始化后 -
x[np.arange(len(indx))[:,None], indx] = 1
关于python - 从索引矩阵填充矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45108775/