[解決済み] numpy.ndarrayのタイプヒンティング/アノテーション(PEP 484)
質問
誰か特定の
numpy.ndarray
クラスに対して型ヒンティングを実装した人はいますか?
今現在、私は
typing.Any
を使っていますが、もっと具体的なものがあればいいですね。
例えば、NumPyの人が 型のエイリアスを を追加したとする。 配列のような オブジェクトクラスで使用することができます。よりよい方法は dtype レベルでサポートを実装し、他のオブジェクトがサポートされるようにし、さらに ufunc .
どのように解決するのですか?
更新情報
最近のnumpyのバージョンをチェックし、新しい
typing
モジュール
https://numpy.org/doc/stable/reference/typing.html#module-numpy.typing
日付入り回答
以下のように見えます。
typing
モジュールが開発されました。
https://github.com/python/typing
メインとなる
numpy
リポジトリは
https://github.com/numpy/numpy
Python のバグとコミットは、次の場所で追跡できます。
機能を追加する通常の方法は、メインリポジトリをフォークして、その機能が爆速になるまで開発し、プルリクエストを提出することです。明らかに、プロセスのさまざまな時点で、他の開発者からのフィードバックが必要です。 もし自分で開発できないのであれば、それが価値あるプロジェクトであることを他の誰かに納得してもらう必要があります。
cython
にはアノテーションの形式があり、それを使って効率的な
C
のコードを生成します。
あなたが参照した
array-like
の段落を
numpy
のドキュメントを参照してください。 その
typing
の情報に注意してください。
array()を使ってオブジェクトをnumpyの配列に変換できるかどうかを調べる簡単な方法は、単に対話的に試してみて、それがうまくいくかどうかを確認することです! (The 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でそれを利用するコードはまだ開発中でした。 しかし、提供されたリンクはまだ有効であるように見えます。
関連
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] タイプヒンティングを使用しているとき、関数にデフォルトのパラメータを追加するにはどうすればよいですか?
-
[解決済み】メソッドの型ヒントは、どのようにエンクロージャクラスの型を使用するのですか?
-
[解決済み】*argsと**kwargsのタイプアノテーション
-
[解決済み】周期的インポートを使用しないPythonのタイプヒンティング
-
[解決済み】指定された型のコレクションをタイプヒンティングする
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] Pythonのインスタンス変数とクラス変数
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。