【发布时间】:2017-09-15 12:53:33
【问题描述】:
我正在尝试实现我自己的自定义类来存储数据。我想让它与 NumPy 兼容,这样我就可以像这样调用 NumPy 函数:
np.sin(my_object)
我知道有一本名为__array_interface__ 的字典,但是我在尝试使用它时遇到了很多奇怪的错误。
import numpy as np
import pandas as pd
class TDF:
__array_interface__ = {'typestr': '|i1', 'version': 1}
def __init__(self):
self.ddata = pd.DataFrame([1, 2, 3])
self.shape = self.ddata.shape
def __iter__(self):
return iter(self.ddata)
def __len__(self):
return len(self.ddata)
def __getitem__(self, key):
return self.ddata.__getitem__(key)
if __name__ == '__main__':
tdf1 = TDF()
tdf = np.sin(tdf1)
上面的代码给了我一个运行时错误:
ValueError: setting an array element with a sequence.
我错过了什么? 另一方面,pandas 的源代码(哪些类与 NumPy 兼容)没有明确使用 array_interface dict...
【问题讨论】:
标签: python arrays class numpy interface