我真正感兴趣的是函数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.])
我实际上已经以循环方式完成了这项任务,但显示出比我想要的更贵。
答案 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.])