从索引矩阵中填充一个矩阵

5

我想从一个索引数组中填充矩阵:

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 实现的方法?

1个回答

5

在初始化后使用高级索引-

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

太快了(不到3分钟?),谢谢!我自己找不到这个.. :) - Toool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接