Справка по ненулевым функциям, Python Numpy - PullRequest
1 голос
/ 29 июля 2011

У меня есть два массива, и у меня сложное условие, подобное этому: 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 ]

5 голосов
/ 29 июля 2011

Попробуйте 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]),)
2 голосов
/ 29 июля 2011

Попробуйте

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

(Если подумать, мой предыдущий пример был не так уж полезен, если все равно он вернул nonzero(condition).)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...