我尝试生成向量[a(1), a(2),...a(100)]
,其中a(i)
sin(i)
sin(i)>0
,0
,numpy.fromfunction
。我想出的是创建一个lambda表达式并通过np.fromfunction(lambda i, j: sin(j) if np.sin(j) > 0 else 0, (1, 100), dtype=int)
应用它,如:ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()
,但这会产生错误
loadtest -c 10 --rps 100 http://example.com/api/collection
我怎样才能解决这个问题?感谢
答案 0 :(得分:1)
对于您的特定情况,您可以使用b = np.sin(range(100))
c = np.zeros(100)
a = np.where(b > c, b, 0)
更一般地,使用np.where()基于2个数组的比较来创建数组:
b = np.sin(range(100))
a = np.where(b > 0, b, 0)
或者,在您的情况下,
c
(无需创建%timeit a = np.where(b > 0, b, 0)
100000 loops, best of 3: 2.15 µs per loop
%timeit b[b<0] = 0
100000 loops, best of 3: 1.11 µs per loop
)
编辑:虽然where()允许更复杂的分配,但似乎更慢:
rails console
答案 1 :(得分:1)
使用数组屏蔽:
a = np.arange(1, 101)
b = np.sin(a)
b[b<0] = 0