Numpy:根据另一个数组中的索引将值放入1-of-n数组中

时间:2012-10-30 02:54:59

标签: python numpy

假设我们有两个数组:一些值,例如array([1.2, 1.4, 1.6]),以及一些索引(比方说,array([0, 2, 1]))我们的输出预计是放入更大数组的值,由指数“解决”,所以我们会得到

array([[ 1.2,  0. ,  0. ],
       [ 0. ,  0. ,  1.4],
       [ 0. ,  1.6,  0. ]])

有没有办法在没有循环的情况下以一种漂亮,快速的方式做到这一点?

2 个答案:

答案 0 :(得分:2)

使用

a = zeros((3,3))
b = array([0, 2, 1])
vals = array([1.2, 1.4, 1.6])

您只需要对其进行索引(在aranger_的帮助下):

>>> a[r_[:len(b)], b] = vals


array([[ 1.2,  0. ,  0. ],
       [ 0. ,  0. ,  1.4],
       [ 0. ,  1.6,  0. ]])

答案 1 :(得分:0)

我们如何修改更高尺寸?例如,a是5x4x3阵列,b和val是5x4阵列。 那么我们如何修改声明a [r _ [:len(b)],b] = vals?