如何编写只取复数的 numpy.ndarray 的子类?

How to write a subclass of numpy.ndarray which only takes complex values?

我想创建一个 numpy.ndarray 的子类,它是一个复数数组。为此,我试图使我的子类的构造函数成为 returns (0+0j) 的数组。我暂时没有成功... 到目前为止,这是我的代码:

import numpy as np


class ComplexArray(np.ndarray):
    def __init__(self, args):
        np.ndarray.__init__(args, dtype=complex)
        self.fill(0)


a = ComplexArray(3)
a[0] = 1j

当我运行上面的代码时,我得到错误TypeError: can't convert complex to float

我指定我之所以要创建这样一个子类是因为我想在其中实现几个方法。

提前感谢您的建议!

我找到了解决办法:

import numpy as np


class ComplexArray(np.ndarray):
    def __new__(cls, n):
        ret = np.zeros(n, dtype=complex)
        return ret.view(cls)