Исходный код example.py:
from typing import Union, Any
import numpy as np
Number = Union[int, float, np.floating[Any]]
def add_one(num: Number) -> Number:
return num + 1
inputs = [1, 2, 3]
outputs = [add_one(n) for n in inputs]
avg = np.mean(outputs)
Запустите mypy:
mypy example.py
src/example.py:14: error: Argument 1 to "mean" has incompatible type "List[Union[float, floating[Any]]]"; expected "Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], bool, int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"
Found 1 error in 1 file (checked 1 source file)
Я могу изменить все на np.floating[Any], что устраняет проблему с numpy, но тогда мне придется привести примитивы к np.float32(...)
код>:
from typing import Any
import numpy as np
def add_one(num: np.floating[Any]) -> np.floating[Any]:
return num + 1
inputs = [1, 2, 3]
outputs = [add_one(np.float32(n)) for n in inputs]
avg = np.mean(outputs)
Есть ли правильный способ ввести подсказку функции add_one, чтобы ее выходные данные были совместимы с цифровыми функциями, такими как np.mean без нарушения совместимости с примитивными типами Python? Конечная цель — иметь возможность использовать его следующим образом:
inputs = [1, 2, 3]
outputs = [add_one(n) for n in inputs]
avg = np.mean(outputs)
Подробнее здесь: https://stackoverflow.com/questions/725 ... with-numpy
Как ввести функцию подсказки, чтобы она была совместима с numpy ⇐ Python
Программы на Python
-
Anonymous
1736326531
Anonymous
Исходный код example.py:
from typing import Union, Any
import numpy as np
Number = Union[int, float, np.floating[Any]]
def add_one(num: Number) -> Number:
return num + 1
inputs = [1, 2, 3]
outputs = [add_one(n) for n in inputs]
avg = np.mean(outputs)
Запустите mypy:
mypy example.py
src/example.py:14: error: Argument 1 to "mean" has incompatible type "List[Union[float, floating[Any]]]"; expected "Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], bool, int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]"
Found 1 error in 1 file (checked 1 source file)
Я могу изменить все на np.floating[Any], что устраняет проблему с numpy, но тогда мне придется привести примитивы к np.float32(...)
код>:
from typing import Any
import numpy as np
def add_one(num: np.floating[Any]) -> np.floating[Any]:
return num + 1
inputs = [1, 2, 3]
outputs = [add_one(np.float32(n)) for n in inputs]
avg = np.mean(outputs)
Есть ли правильный способ ввести подсказку функции add_one, чтобы ее выходные данные были совместимы с цифровыми функциями, такими как np.mean [b]без нарушения совместимости с примитивными типами Python[/b]? Конечная цель — иметь возможность использовать его следующим образом:
inputs = [1, 2, 3]
outputs = [add_one(n) for n in inputs]
avg = np.mean(outputs)
Подробнее здесь: [url]https://stackoverflow.com/questions/72566477/how-to-type-hint-function-to-be-compatible-with-numpy[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия