#python #numpy
Необходимо сравнить два массива: если элементы на четных индексах первого массива больше второго, то тогда true, для нечетных индексов тоже самое. В итоге должен быть получен новый "бурливый" массив true/false. a = np.array([1,2,3]) b = np.array([5,0,1]) Как реализовать данное сравнение? С помощью np.where?
Ответы
Ответ 1
Проверяем четность индекса и в зависимости от результата выбираем одно из условий: In [57]: res = np.where( np.arange(1, len(a)+1) % 2 == 0, a > b, b > a ) Результат: In [58]: res Out[58]: array([ True, False, True, True, False])Ответ 2
Допустимо ли создать массив индексов? Индексы начинаются с 1? import numpy as np A = np.array([1, 2, 3, 4, 5]) B = np.array([5, 3, 4, 0, 2]) I = np.argpartition(A, 0) R = np.logical_or(np.logical_and(1 - (I + 1) % 2, A > B), np.logical_and((I + 1) % 2, A < B)) print(type(R), R) Вывод:[ True False True True False] Демо на Rextester.
Комментариев нет:
Отправить комментарий