Попытка создать Pytables EArray на основе одного столбца из numpy recarray. Кажется, это работает, если я использую createArray, поскольку я могу просто передать ему массив numpy, извлеченный из recarray. Однако для createEArray мне нужно определить атом, что вызывает проблемы
В примере MyRecArray — это массив записей с одномерными массивами для столбцов, 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(....)"
Спасибо