Введите подсказку для массивов и пакетов numpyPython

Программы на Python
Anonymous
Введите подсказку для массивов и пакетов numpy

Сообщение Anonymous »

Я пытаюсь создать несколько типов массивов для научного проекта Python. На данный момент я создал универсальные типы для массивов 1D, 2D и ND:

Код: Выделить всё

from typing import Any, Generic, Protocol, Tuple, TypeVar

import numpy as np
from numpy.typing import _DType, _GenericAlias

Vector = _GenericAlias(np.ndarray, (Tuple[int], _DType))
Matrix = _GenericAlias(np.ndarray, (Tuple[int, int], _DType))
Tensor = _GenericAlias(np.ndarray, (Tuple[int, ...], _DType))
Первая проблема заключается в том, что mypy говорит, что Vector, Matrix и Tensor не являются допустимыми типами (например, когда я пытаюсь использовать myvar: Vector[int ] = np.array([1, 2, 3]))
Вторая проблема заключается в том, что я хотел бы создать пакет общего типа, который Я бы хотел использовать так: Batch[Vector[complex]] должен быть похож на Matrix[complex], Batch[Matrix[float]] должен быть похож на Tensor[float] и Batch[Tensor[int] должны быть похожи на Tensor[int]. Я не уверен, что я имею в виду под «должно быть». Думаю, я имею в виду, что mypy не должен жаловаться.
Как мне с этим справиться?

Подробнее здесь: https://stackoverflow.com/questions/754 ... nd-batches

Вернуться в «Python»