[解決済み] numpy: "array_like "オブジェクトの正式な定義?
2023-06-16 14:33:27
質問
numpyでは、多くのオブジェクトのコンストラクタは、最初の引数として"array_like"を受け取ります。そのようなオブジェクトの定義、抽象的なメタクラス、または含まれるべきメソッドのドキュメントはありますか?
どのように解決するのですか?
ほとんどのものが技術的に配列のようなものであることがわかりました。 "Array-like"は、入力が何であるかの制限というより、どのように解釈されるかの記述です。もしパラメータが配列のようだと文書化されていれば、NumPyがそれを配列として解釈しようとします。
を超える配列のようなものの正式な定義はありません。
ほぼ同語反復的なものである
-- 配列のようなものとは、以下のような Python オブジェクトのことです。
np.array
に変換することができます。
ndarray
. これを超えるためには
ソースコード
.
NPY_NO_EXPORT PyObject *
PyArray_FromAny(PyObject *op, PyArray_Descr *newtype, int min_depth,
int max_depth, int flags, PyObject *context)
{
/*
* This is the main code to make a NumPy array from a Python
* Object. It is called from many different places.
*/
PyArrayObject *arr = NULL, *ret;
PyArray_Descr *dtype = NULL;
int ndim = 0;
npy_intp dims[NPY_MAXDIMS];
/* Get either the array or its parameters if it isn't an array */
if (PyArray_GetArrayParamsFromObject(op, newtype,
0, &dtype,
&ndim, dims, &arr, context) < 0) {
Py_XDECREF(newtype);
return NULL;
}
...
特に興味深いのは
PyArray_GetArrayParamsFromObject
で、そのコメントにはオブジェクトの種類が列挙されています。
np.array
が期待されます。
NPY_NO_EXPORT int
PyArray_GetArrayParamsFromObject(PyObject *op,
PyArray_Descr *requested_dtype,
npy_bool writeable,
PyArray_Descr **out_dtype,
int *out_ndim, npy_intp *out_dims,
PyArrayObject **out_arr, PyObject *context)
{
PyObject *tmp;
/* If op is an array */
/* If op is a NumPy scalar */
/* If op is a Python scalar */
/* If op supports the PEP 3118 buffer interface */
/* If op supports the __array_struct__ or __array_interface__ interface */
/*
* If op supplies the __array__ function.
* The documentation says this should produce a copy, so
* we skip this method if writeable is true, because the intent
* of writeable is to modify the operand.
* XXX: If the implementation is wrong, and/or if actual
* usage requires this behave differently,
* this should be changed!
*/
/* Try to treat op as a list of lists */
/* Anything can be viewed as an object, unless it needs to be writeable */
}
つまり、ソースコードを調査することで、配列のようなものは
- NumPyの配列、または
- a NumPyスカラー または
- Pythonのスカラー、または
- をサポートする任意のオブジェクト PEP 3118 バッファインタフェース をサポートするオブジェクト、または
-
をサポートする任意のオブジェクト。
__array_struct__
または__array_interface__
インターフェース または -
を提供する任意のオブジェクト。
__array__
機能 或いは - リストのリストとして扱える任意のオブジェクト、または
-
あらゆるもの! の0次元配列として扱われます。
object
dtype として扱われます。
関連
-
[解決済み] NumPyの配列を切り詰めずに、完全に表示するにはどうしたらよいですか?
-
[解決済み] NumPyの配列で、N個の最大値のインデックスを得るには?
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] NumPyでユークリッド距離はどのように計算できますか?
-
[解決済み] NumPy の配列を csv ファイルにダンプする
-
[解決済み] NumPy多次元配列のi番目の列にアクセスする方法は?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] Django filter queryset __in for *every* item in list
-
[解決済み] numpy.ndarrayのタイプヒンティング/アノテーション(PEP 484)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Pythonでファイルの読み込みと上書きをする