Я хочу эффективно преобразовывать значения из списка (или массива numpy) в массив numpy бит: отрицательное значение должно стать 0 в новом массиве, а положительное значение a 1 в новом массиве.Преобразование положительных и отрицательных значений в битовую строку с помощью numpy.clip
Е.Г.,
>> import numpy as np
>> np.clip([1,2,3,-1,-2], a_min=0, a_max=1)
array([1, 1, 1, 0, 0])
Однако, если у меня есть поплавки в списке, этот метод сохраняет их как:
>> np.clip([1,0.45,3,-1,-2], a_min=0, a_max=1)
array([ 1. , 0.45, 1. , 0. , 0. ])
Есть хороший способ обойти это поведение? Один из способов - объединить ценности. Но я бы хотел, чтобы все, что было положительным, было назначено 1. Если бы я использовал np.around()
, это было бы круглым 0,45 -> 0.
Nice, спасибо! Я буду принимать этот ответ, когда StackOverflow позволяет мне! – Sebastian
Обратите внимание, что если производительность является проблемой, я получаю, что '(a> 0) .astype ('i1')' намного быстрее, чем 'np.where (a> 0, 1, 0)'. Разница больше, чем больше массив. Я получаю примерно вдвое быстрее для массива длиной в 100 длин, что в 10 раз быстрее для массива длиной 10 КБ. –
Спасибо за примечание @RogerFan – Sebastian