Работает:
import numpy as np
dtype_L1 = [('ts', np.float32), ('s_id', np.uint16)]
arr = np.array((1,2), dtype=dtype_L1)
arr
array((1., 2), dtype=[('ts', '<f4'), ('s_id', '<u2')]) ##### CORRECT
Huups: Из-за объявления unit16
-2
интерпретируется как 65534
:
arr2 = np.array((1,-2), dtype=dtype_L1)
arr2
array((1., 65534), dtype=[('ts', '<f4'), ('s_id', '<u2')]) ##### -2 interpreted wrongly
Есть ли метод в numpy
который выполняет что-то вроде проверки типа , чтобы убедиться, что все входные данные соответствуют стандартным диапазонам ?
Таким образом, он будет проверять, является ли поле unit16
«Целое число без знака (от 0 до 65535)» , и в противном случае установит значение по умолчанию?