用零填充numpy数组,并使用另一个数组作为

时间:2017-01-03 18:10:02

标签: python arrays numpy padding

我正在尝试填充numpy数组,我似乎无法从numpy的文档中找到正确的方法。我有一个数组:

a = array([2, 1, 3, 5, 7])

这表示我想要创建的数组的索引。所以在索引值2或1或3等我希望在数组中有一个,并且在目标数组中的其他地方,用零填充。有点像数组掩码。我还想指定目标数组的总长度l。所以我的理想功能就像:

>>> foo(a,l)
array([0,1,1,1,0,1,0,1,0,0,0]

,其中l=10为上述示例。

编辑:

所以我写了这个函数:

def padwithones(a,l) :
    p = np.zeros(l)
    for i in a :
        p = np.insert(p,i,1)
    return p

给出了:

Out[19]: 
array([ 0.,  1.,  0.,  1.,  1.,  1.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,
        0.,  0.])

哪个不正确!

1 个答案:

答案 0 :(得分:2)

您正在寻找的基本上是一个热门阵列:

def onehot(foo, l):
    a = np.zeros(l, dtype=np.int32)
    a[foo] = 1
    return a

示例:

In [126]: onehot([2, 1, 3, 5, 7], 10)
Out[126]: array([0,  1,  1,  1,  0,  1,  0,  1,  0,  0])