Рассмотрим список numpy массивов со значениями -1 или 1, расположенными в случайных позициях.
a = np.array([1,-1,1,1,-1,1,-1,-1,1,-1])
b = np.array([-1,-1,1,-1,1,1,-1,1,-1,-1])
Мне нужно выполнить операции над этими массивами, такие как умножение суммы и точки.
Например, после суммирования двух массивов у меня будет новый со значениями -2,0 и 2.
c = a + b
c = [ 0 -2 2 0 0 2 -2 0 0 -2]
Теперь я хотел бы «нормализовать» его обратно к -1 и 1.
Для 2 и -2 это легко:
c[c < 0] = -1
c[c > 0] = 1
Проблема в 0. Для них я хотел бы выбрать случайным образом -1 или 1.
Желаемый результат будет выглядеть следующим образом:
c = [ 1 -1 1 -1 -1 1 -1 1 -1 -1]
В обобщенных терминах мой вопрос состоит в том, как найти в массиве все N значений, равных x, а затем заменить каждое случайное число.
У меня вопрос, как сделать это самым «питонным» и самым быстрым способом?
Спасибо