numpy 再配列の 1 つの列に基づいて、実行時に Pytables EArray を作成しようとしています。createArray を使用している場合、再配列から抽出された numpy 配列を単純に渡すことができるため、これはうまくいくようです。ただし、 createEArray の場合、問題を引き起こしているアトムを定義する必要があります
この例では、MyRecArray は列の 1 次元配列を持つ recordarray であり、Myhdf5 は定義済みの Pytables ファイルであり、Mynode は EArray の葉がハングするファイル内の定義済みのグループです。
Myfield = MyRecArray[Colname]
afieldtype = Myfield.dtype
Myatom = tables.atom.Atom(afieldtype, (1,), -9999)
MyEarray = Myhdf5.createEArray(Mynode, Colname, Myatom, (0,))
MyEarray.append(Myfield )
MyEarray.flush()
MyEarray.close()
このコードを使用すると、エラーが発生します。
NotImplementedError: ``Atom`` is an abstract class;
please use one of its subclasses
おそらく、配列時間に基づいて case ステートメントを使用してサブルーチンを記述し、アトムを返すことができますが、呼び出す代わりに、作成する配列型を渡すことでそのようなアトムを作成する一般的な方法があるかどうか疑問に思っていました「tables.atom.FloatAtom(....)」など、さまざまなデータ型の特定の関数
ありがとう