Понимание преобразования из float в np.uint8 для Python - PullRequest
0 голосов
/ 27 сентября 2018

Я использую скрипт Python 2.7, и недавно у меня возникла эта проблема преобразования при переходе с плавающей запятой на uint8, где отрицательное значение было не обрезкой до 0, а значением 256.

, упрощая мой код,это может выглядеть примерно так:

a = -72.0
b = np.array(a, dtype=np.uint8)
c = np.array(np.clip(a,0,255),dtype=np.uint8)

print 'a =',a, 'b =',b, 'c =', c

a = -72.0 b = 184 c = 0

Я просто пытаюсь понять, почему b не было установлено в 0, но вместо этого оно перешло на 256-72 = 184.Если у кого-нибудь есть объяснение или хорошая ссылка на тип данных, который я могу прочитать, было бы здорово.

Спасибо

1 Ответ

0 голосов
/ 27 сентября 2018

Я считаю, что нашел свой собственный ответ, он просто связан с тем, как знаковые и беззнаковые числа интерпретируются в двоичном виде.Поэтому, когда я перехожу со знака -72 на неподписанный из-за uint8, они оба пишутся одинаково на двоичном уровне.Просто один читал -72, а другой + 184

...