Массив dtype
, возвращаемый numpy.zeros
, по умолчанию равен float64
. Если вам нужен другой тип, либо явно введите dtype
, например ::
data_new = np.zeros(len(data), np.int16)
или, если data
был уже правильного размера и dtype
, используйте np.zeros_like
, чтобы скопировать его формат и структуру:
data_new = np.zeros_like(data)
Имейте в виду, что в данном конкретном случае правильное решение, скорее всего, просто позволит numpy
выполнять маскирование и создание нового массива неявным образом, заменив создание массива и цикл для заполнения его просто:
data_new = data & -2
, который будет работать намного быстрее и "просто работать" (он будет иметь тот же размер и dtype
, что и data
автоматически).