gpt4 book ai didi

python - 子类化 numpy 标量类型

转载 作者:太空狗 更新时间:2023-10-29 23:59:54 25 4
gpt4 key购买 nike

我正在尝试子类化 numpy.complex64 以利用 numpy 存储数据的方式(连续、交替的实部和虚部),但使用我自己的 __add__, __sub__, ... 例程。

我的问题是,当我制作一个 numpy.ndarray 时,设置 dtype=mysubclass,我得到一个 numpy.ndarraydtype='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)

输出:

<class '__main__.mysubclass'>
array([ -2.07782988e-20 +4.58546896e-41j, -2.07782988e-20 +4.58546896e-41j], dtype=complex64)'

有人知道怎么做吗?

提前致谢 - 索伦

最佳答案

NumPy 类型系统仅设计为通过 PyArray_RegisterDataType 从 C 扩展。功能。 可能可以使用 ctypes 从 Python 访问此功能,但我不推荐这样做;最好用 C 或 Cython 编写扩展,或者像 @seberg 描述的那样子类 ndarray

NumPy 源代码树中有一个简单的数据类型示例:newdtype_example/floatint.c .如果您喜欢 Pyrex,reference.pyx在 pytables 源代码中可能值得一看。

关于python - 子类化 numpy 标量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13729521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com