Код: Выделить всё
1.0 * (np.array([np.uint8(40)])-80)
Код: Выделить всё
import numpy as np
C = 1.0
def f(x):
return C * (x - 80)
print(f(np.array([np.uint8(40)])))
Код: Выделить всё
print(np.vectorize(f)(np.array([np.uint8(40)])))
Код: Выделить всё
[-40.]
/var/folders/jz/34xs15sd3ng6dpxkv78hh1lr0000gn/T/ipykernel_61208/1067934613.py:7: RuntimeWarning: overflow encountered in scalar subtract
return C * (x - 80)
Я ожидал бы того же результата, если бы вручную указывал тип данных вывода. Итак, это:
Код: Выделить всё
print(np.vectorize(f,otypes=[np.float64])([np.uint8(40)]))
Код: Выделить всё
np.float64Код: Выделить всё
[216.]
/var/folders/jz/34xs15sd3ng6dpxkv78hh1lr0000gn/T/ipykernel_67644/1868397835.py:7: RuntimeWarning: overflow encountered in scalar subtract
return C * (x - 80)
Почему print(np.vectorize(f)(np.array([np.uint8(40)]))) избегает целочисленного переполнения, которое print(f(np.array([np.uint8(40)]))) и print(np.vectorize(f,otypes=[np.float64])([np.uint8(40)])) не избегайте?