我想實現我自己的自定義類來存儲數據。嘗試使用時Python - 如何實現與NumPy函數兼容的自定義類?
np.sin(my_object)
我知道有一個叫__array_interface__
字典,但是我得到很多奇怪的錯誤:我希望把它與NumPy的兼容,所以,我可以打電話NumPy的功能,它是這樣它。
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.
我缺少什麼? 在另一方面大熊貓(哪些類與NumPy兼容)的源代碼沒有明確使用array_interface字典...
謝謝。是的 - 那是需要的。如果你想讓numpy函數的結果成爲你的自定義類型,你還必須添加__array_wrap__方法。 –
有時也有'__array_prepare__'。即將到來你附近的一個numpy:'__array_ufunc__',它對'__array_wrap__'做了更好的工作 – Eric