Sor*_*ren 6 python numpy subclass user-defined-types
我试图子类numpy.complex64,以利用方式numpy的商店的数据,(连续,交替的实部和虚部),但用我自己的__add__,__sub__...例程.
我的问题是,当我做一个numpy.ndarray,设置dtype=mysubclass,我得到一个numpy.ndarray与dtype='numpy.complex64'在代替,导致numpy的不是用我自己的功能添加,删减等.
例:
import numpy as np
class mysubclass(np.complex64):
pass
a = mysubclass(1+1j)
A = np.empty(2, dtype=mysubclass)
print type(a)
print repr(A)
Run Code Online (Sandbox Code Playgroud)
输出:
<class '__main__.mysubclass'>
array([ -2.07782988e-20 +4.58546896e-41j, -2.07782988e-20 +4.58546896e-41j], dtype=complex64)'
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?
提前谢谢 - 索伦
NumPy 类型系统仅设计为通过函数从 C 扩展PyArray_RegisterDataType。或许可以使用 ctypes 从 Python 访问此功能,但我不推荐这样做;最好用 C 或 Cython 编写扩展,或者ndarray像 @seberg 描述的那样编写子类。
NumPy 源代码树中有一个简单的示例 dtype:newdtype_example/floatint.c。如果您喜欢 Pyrex, pytables 源代码中的reference.pyx可能值得一看。