是否有人爲特定的numpy.ndarray類實現了類型提示?numpy.ndarray的類型提示/註釋(PEP 484)
現在,我正在使用typing.Any,但它會更好地具有更具體的東西。
例如,如果numpy人爲他們的array_like對象類添加type alias。更好的是,在dtype級別實現支持,以便支持其他對象以及ufunc。
是否有人爲特定的numpy.ndarray類實現了類型提示?numpy.ndarray的類型提示/註釋(PEP 484)
現在,我正在使用typing.Any,但它會更好地具有更具體的東西。
例如,如果numpy人爲他們的array_like對象類添加type alias。更好的是,在dtype級別實現支持,以便支持其他對象以及ufunc。
看起來typing
模塊在研發:
https://github.com/python/typing
主要numpy
庫是在
https://github.com/numpy/numpy
Python的錯誤,並承諾可以在
添加功能的常用方法是分叉主存儲庫,開發功能,直到它是防爆炸的,然後提交拉請求。很明顯,在這個過程中的各個方面你都需要其他開發者的反饋。如果你自己無法做到這一點,那麼你必須說服其他人這是一個有價值的項目。
cython
有一種註釋形式,它用來生成高效的C
代碼。
您在numpy
文檔中引用的array-like
段落。注意其typing
信息:
一個簡單的方法,以找出是否該對象可以使用數組轉換爲numpy的陣列()僅僅是交互式嘗試一下,看看它是否工作! (Python方式)。
換句話說,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
等。
結賬DataShape。它使用數據類型以及一些輸入和輸出數組應該有多大的語法。
因此DataShape是一個Numpy _alternative_?不是我想到的,因爲我正在使用SciPy,它需要Numpy。 – Inon
DataShape是一個描述。目前沒有官方功能註釋,但到目前爲止,這是我見過的Numpy類型的最佳描述,如果您打算構建函數註釋。是的,我建議創建一個新的模塊名稱,並在將函數註釋引入numpy源代碼之前將其用作概念驗證。 – Back2Basics
我做什麼,只是把它定義爲
快譯通[元組[INT,INT] TYPE]
因此,舉例來說,如果你想花車你可以做的數組:
a = numpy.empty(shape=[2, 2], dtype=float) # type: Dict[Tuple[int, int], float]
這當然是不準確的,從一個文檔的觀點,但分析正確使用和得到適當的補償與pyCharm letion它效果很好!
我不記得在SO'numpy'問題或答案中看到任何對Python3類型註釋的使用。 – hpaulj
https://pypi.python.org/pypi/plac可以使用Py3批註 - 填充'argparse'分析器。對於Py2,它使用裝飾器來創建一個類似的'annocation'數據庫。 – hpaulj
「打字」是Py 3.5的新功能。許多'numpy'用戶仍然使用Py2。我的系統上有3.5,但我沒有安裝'numpy'。 'numpy'開發人員不會爲Python的最前沿添加功能(除了'@'運算符) – hpaulj