非零函数帮助,Python Numpy

时间:2011-07-29 15:46:45

标签: python numpy conditional-statements

我有两个数组,我有一个复杂的条件:new_arr<0 and old_arr>0 我使用非零但我收到错误。我的代码就是:

    indices = nonzero(new_arr<0 and old_arr>0)

我试过了:

    indices = nonzero(new_arr<0) and nonzero(old_arr>0)

但它给了我不正确的结果。

这有什么办法吗?有没有办法从两个非零语句中获取公共索引。例如,如果:

    indices1 = nonzero(new_arr<0)
    indices2 = nonzero(old_arr>0)

这两个指数包含:

   indices1 = array([0, 1, 3])
   indices2 = array([2, 3, 4])

正确的结果是从这两个中获取公共元素(在这种情况下,它将是元素3)。像这样:

    result = common(indices1, indices2)

2 个答案:

答案 0 :(得分:5)

尝试indices = nonzero((new_arr < 0) & (old_arr > 0))

In [5]: import numpy as np

In [6]: old_arr = np.array([ 0,-1, 0,-1, 1, 1, 0, 1])

In [7]: new_arr = np.array([ 1, 1,-1,-1,-1,-1, 1, 1])

In [8]: np.nonzero((new_arr < 0) & (old_arr > 0))
Out[8]: (array([4, 5]),)

答案 1 :(得分:2)

尝试

indices = nonzero(logical_and(new < 0, old > 0))

(考虑到这一点,我之前的例子并不是那么有用,如果它所做的只是返回nonzero(condition)。)