numpy значение по умолчанию для dtype вне допустимого диапазона - PullRequest
0 голосов
/ 07 мая 2020

Работает:

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)» , и в противном случае установит значение по умолчанию?

1 Ответ

0 голосов
/ 07 мая 2020

Есть несколько функций для проверки диапазонов типов данных, см. здесь . Существуют np.iinfo и np.finfo для целочисленных и плавающих типов данных соответственно. Например:

info = np.iinfo(np.uint16)

info
>>> iinfo(min=0, max=65535, dtype=uint16)

А атрибуты min и max можно получить как info.min et c.

...