Как получить нулевое значение для некоторых элементов в массиве? - PullRequest
0 голосов
/ 08 января 2019

Мой выходной массив выглядит так, как показано ниже. Затем я хочу обнулить все элементы, которые имеют значение между (0.75 to 1.06) (0,75 > output > 1.06).

array([2.        , 1.72787724, 1.45575448, 1.18363171, 0.91150895,
       0.63938619, 0.36726343, 0.09514066, 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
       0.        , 0.        , 0.        , 0.        , 0.12235294,
       0.43529412, 0.74823529, 1.06117647, 1.37411765, 1.68705882,
       2.        ])

Я пытался np.where(0.75 >output >1.06,0,1), но это не работает:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы можете использовать np.vectorize, чтобы применить функцию к элементам вашего массива, например:

a = np.array([[-9,-7,-3],[-1,9,3],[1,4,10]])
def func(x):
    if -5<x<5:
        return 0
    else:
        return x
vfunc = np.vectorize(func)
b = vfunc(a)
print(b)

выход

[[-9 -7  0]
 [ 0  9  0]
 [ 0  0 10]]
0 голосов
/ 08 января 2019

Для этого вы можете использовать встроенные в логические операторы numpys. Попробуйте: np.logical_and(np.where(output > 0.75), np.where(output < 1.06))

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