Python 如何为Pytables Array创建定义atom

Python 如何为Pytables Array创建定义atom,python,numpy,pytables,Python,Numpy,Pytables,尝试基于numpy重新排列中的一列在运行时创建Pytables array。如果我使用createArray,这似乎是可行的,因为我可以简单地将从recarray中提取的numpy数组传递给它。然而,对于CreateArray,我需要定义原子-这会导致问题 在示例中,MyRecArray是一个recordarray,列为一维数组,Myhdf5是一个预定义的Pytables文件,Mynode是该文件中的一个预定义组,耳环叶将从中挂起 Myfield = MyRecArray[Colnam

尝试基于numpy重新排列中的一列在运行时创建Pytables array。如果我使用createArray,这似乎是可行的,因为我可以简单地将从recarray中提取的numpy数组传递给它。然而,对于CreateArray,我需要定义原子-这会导致问题

在示例中,MyRecArray是一个recordarray,列为一维数组,Myhdf5是一个预定义的Pytables文件,Mynode是该文件中的一个预定义组,耳环叶将从中挂起

     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语句的子例程并传回一个atom,但我只是想知道是否有一种通用的方法来创建这样一个atom,方法是将要创建的数组类型传递给它,而不必为不同的数据类型调用特定的函数,例如“tables.atom.floatom(…)


谢谢

我相信使用该功能:

tables.Atom.from_dtype(afieldtype, dflt=-9999)
将允许您创建一个原子,而无需执行子例程。形状包含在数据类型“afieldtype”(例如
dtype([('col1','