用零填充一个 numpy 数组,并使用另一个数组作为一个的索引
Padding a numpy array with zeros, and using another array as an index for ones
我正在尝试填充一个 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.])
这是不正确的!
你要找的基本上是一个单热数组:
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])
我正在尝试填充一个 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.])
这是不正确的!
你要找的基本上是一个单热数组:
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])