Ответ 1
Похоже, что модуль typing
был разработан:
https://github.com/python/typing
Основной репозиторий numpy
находится в
https://github.com/numpy/numpy
Ошибки и коммиты Python можно отслеживать в
Обычный способ добавления функции состоит в том, чтобы развернуть основной репозиторий, развить эту функцию до тех пор, пока она не станет доказательством бомбы, а затем отправьте запрос на вытягивание. Очевидно, что в разные моменты процесса вам нужна обратная связь от других разработчиков. Если вы не можете самостоятельно выполнить разработку, тогда вам нужно убедить кого-то в том, что это достойный проект.
cython
имеет форму аннотаций, которую он использует для генерации эффективного кода C
.
Вы ссылаетесь на абзац array-like
в документации numpy
. Обратите внимание на информацию typing
:
Простой способ узнать, может ли объект быть преобразован в массив numpy с помощью array(), просто попробуйте в интерактивном режиме и посмотрите, работает ли он! (Путь Питона).
Другими словами, разработчики numpy
отказываются прижаться. Они не могут или не могут описать словами, какие объекты могут или не могут быть преобразованы в np.ndarray
.
In [586]: np.array({'test':1}) # a dictionary
Out[586]: array({'test': 1}, dtype=object)
In [587]: np.array(['one','two']) # a list
Out[587]:
array(['one', 'two'],
dtype='<U3')
In [589]: np.array({'one','two'}) # a set
Out[589]: array({'one', 'two'}, dtype=object)
Для ваших собственных функций примечание типа
def foo(x: np.ndarray) -> np.ndarray:
работает. Конечно, если ваша функция заканчивается вызовом некоторой функции numpy
, которая передает свой аргумент через asanyarray
(как это делают многие), такая аннотация будет неполной, так как ваш вход может быть list
или np.matrix
и т.д..