如何有效地填充np.zeros与"测温仪"办法?

时间:2017-10-28 13:10:27

标签: python arrays numpy

我真正感兴趣的是函数foo,以便填充大小为n np.zeros或等同于基于0 {0}之间的数字x的内容和1。

示例:

>>> foo(1, 3)
array([1., 1., 1.])
>>> foo(0, 3)
array([0., 0., 0.])
>>> foo(.6, 3)
array([1., 1., 0.])
>>> foo(.3, 3)
array([1., 0., 0.])

我实际上已经以循环方式完成了这项任务,但显示出比我想要的更贵。

2 个答案:

答案 0 :(得分:1)

随机:

def foo(p, n):
    return np.random.choice(2, (n,), p = [p-1, p])

嵌段:

def foo(p, n):
    out = np.zeros(n)
    out[:int(p*n)] = 1
    return out

答案 1 :(得分:1)

这是假设我从样本中得到“测温”方式的一种方法 -

def foo(a,b):
    out = np.zeros(b)
    out[:int(np.ceil(b*a))] = 1
    return out

broadcasted comparison -

的单行班次
def foo(a,b):
    return (np.arange(b) < b*a).astype(float)

示例运行 -

In [107]: foo(1,3)
Out[107]: array([ 1.,  1.,  1.])

In [108]: foo(0,3)
Out[108]: array([ 0.,  0.,  0.])

In [109]: foo(0.6,3)
Out[109]: array([ 1.,  1.,  0.])

In [110]: foo(0.3,3)
Out[110]: array([ 1.,  0.,  0.])