pyvista.ImageData.user_dict

pyvista.ImageData.user_dict#

property ImageData.user_dict: _SerializedDictArray[ソース]#

ユーザー指定のデータ辞書を設定または返します。

ディクショナリは、メッシュのフィールドデータの一部として、JSONでシリアライズされた文字列として格納されます。値を配列として格納する必要がある通常のフィールドデータとは異なり、ユーザー辞書はスカラー値のマッピングを提供します。

ユーザーdictはフィールドデータとして保存されるため、互換性のあるファイル形式( .vtk' など)で保存されると、自動的にメッシュと一緒に保存されます。保存されたメタデータは、ユーザ dict に再度アクセスするたびに、PyVista によって自動的にデシリアライズされます。データはJSONとして保存されるので、他のプログラムから簡単に取得したり読み込んだりすることができます。

つまり、 dict, list, tuple, str, int, float, bool, None 型の値を持つことができます。NumPyの配列を格納することは直接サポートされていませんが、配列に対して tolist() を呼び出すなどして、あらかじめサポートされている型にキャストしておくことができます。

データセットのフィールドデータからユーザーdict文字列を完全に削除するには、その値を None に設定します。

注釈

user dictは便利なプロパティであり、メタデータの保存を目的としています。これは非効率的な辞書実装を持ち、比較的小さな値を持ちます、アクセス頻度の低い少数のキーを格納するためにのみ使用されるべきです。多くのエントリを持つ、頻繁にアクセスされる配列データを格納するために使用すべきではありません(代わりに通常のフィールドデータ配列を使用する必要があります) 。

警告

フィールドデータは、通常、データセットフィルターによって通過されます。したがって、一般的には、フィルターメソッドの出力において、ユーザーディクトの項目は持続し、変更されないことが期待されます。しかし、フィルタによってはフィールドデータを変更したりクリアしたりする可能性があるため、この動作は保証されません。 注意して使用してください。

Added in version 0.44.

戻り値:
UserDict

collections.UserDict からサブクラス化された、JSONでシリアライズされたディクトのようなオブジェクト。

メッシュをロードする。

>>> import pyvista as pv
>>> from pyvista import examples
>>> mesh = examples.load_ant()

ユーザーdictにデータを追加します。内容はJSONとしてシリアライズされます。

>>> mesh.user_dict['name'] = 'ant'
>>> mesh.user_dict
{"name": "ant"}

あるいは、既存のdictからユーザーdictを設定します。

>>> mesh.user_dict = dict(name='ant')

ユーザーdictは通常のdictのように更新できます。

>>> mesh.user_dict.update(
...     {
...         'num_legs': 6,
...         'body_parts': ['head', 'thorax', 'abdomen'],
...     }
... )
>>> mesh.user_dict
{"name": "ant", "num_legs": 6, "body_parts": ["head", "thorax", "abdomen"]}

ユーザーディクトのデータはフィールドデータとして保存されます。

>>> mesh.field_data
pyvista DataSetAttributes
Association     : NONE
Contains arrays :
    _PYVISTA_USER_DICT      str        "{"name": "ant",..."

フィールドデータなので、ユーザーdictはメッシュと一緒にファイルに保存し、後で取り出すことができます。

>>> mesh.save('ant.vtk')
>>> mesh_from_file = pv.read('ant.vtk')
>>> mesh_from_file.user_dict
{"name": "ant", "num_legs": 6, "body_parts": ["head", "thorax", "abdomen"]}