numPy数组上的逻辑函数

时间:2015-10-26 13:14:58

标签: python numpy lambda

我尝试生成向量[a(1), a(2),...a(100)],其中a(i) sin(i) sin(i)>00numpy.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

我怎样才能解决这个问题?感谢

2 个答案:

答案 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