【问题标题】:Fill a matrix from a matrix of indices从索引矩阵填充矩阵
【发布时间】:2017-07-14 17:35:33
【问题描述】:

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

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 中做到这一点而无需循环?

【问题讨论】:

    标签: python numpy matrix


    【解决方案1】:

    初始化后使用advanced-indexing -

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

    【讨论】:

    • 这很快(不到 3 分钟?),谢谢!我自己找不到这个.. :)
    猜你喜欢
    • 2018-05-06
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2013-05-27
    • 2021-01-15
    • 1970-01-01
    相关资源
    最近更新 更多