web-dev-qa-db-ja.com

numpy.ndarrayのタイプヒント/注釈(PEP 484)

特定の numpy.ndarray クラスに対して型ヒントを実装している人はいますか?

現在、私は typing.Any を使用していますが、もっと具体的なものがあればいいでしょう。

たとえば、numpyの人々が array_like オブジェクトクラスに type alias を追加した場合。さらに良いのは、 dtype レベルでサポートを実装して、他のオブジェクトと func がサポートされるようにすることです。

40
Inon

typingモジュールは次の場所で開発されたようです。

https://github.com/python/typing

メインのnumpyリポジトリは

https://github.com/numpy/numpy

Pythonのバグとコミットは次の場所で追跡できます。

http://bugs.python.org/

機能を追加する通常の方法は、メインリポジトリを分岐し、機能が耐爆性になるまで機能を開発し、プルリクエストを送信することです。プロセスのさまざまな時点で、明らかに他の開発者からのフィードバックが必要です。自分で開発を行うことができない場合、価値のあるプロジェクトであることを他の人に納得させる必要があります。

cythonには注釈の形式があり、これを使用して効率的なCコードを生成します。


numpyドキュメントのarray-like段落を参照しました。 typing情報に注意してください。

Array()を使用してオブジェクトをnumpy配列に変換できるかどうかを確認する簡単な方法は、単にインタラクティブに試して、動作するかどうかを確認することです! (Python Way)。

言い換えれば、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など。


この質問と回答を評価するときは、日付に注意してください。 484は当時比較的新しいPEPであり、標準のPythonはまだ開発中です。しかし、提供されたリンクはまだ有効であるようです。

17
hpaulj

DataShape を確認してください。データ型と、入力および出力配列の大きさの構文を使用します。

5
Back2Basics

私がやったことは、それを

Dict [Tuple [int、int]、TYPE]

たとえば、floatの配列が必要な場合は、次のようにします。

a = numpy.empty(shape=[2, 2], dtype=float) # type: Dict[Tuple[int, int], float]

これはもちろん、ドキュメントの観点からは正確ではありませんが、正しい使用法を分析し、pyCharmで適切に完成させるために、うまく機能します!

4
Leon Vayman