我想创建numpy.ndarray
包含复杂整数值的对象。NumPy 确实具有内置的复杂支持,但仅适用于浮点格式(float
和double
);例如,我可以创建一个ndarray
with dtype='cfloat'
,但没有类似dtype='cint16'
的 . 我希望能够创建包含使用 8 位或 16 位整数表示的复杂值的数组。
我发现了 2007 年的这个邮件列表帖子,有人询问了这种支持。他们推荐的唯一解决方法是定义一个dtype
包含整数对的新方法。这似乎将每个数组元素表示为 2 个值的元组,但尚不清楚需要完成哪些其他工作才能使生成的数据类型与算术函数无缝协作。
我还考虑了另一种基于使用 NumPy注册用户定义类型的方法。如果它运行良好,我没有问题去 C API 进行设置。但是,类型描述符结构的文档似乎表明该类型的kind
字段仅支持有符号/无符号整数、浮点和复数浮点数字类型。目前尚不清楚我能否在任何地方尝试定义复杂的整数类型。
关于可能有效的方法的任何建议?
编辑:还有一件事;我选择的任何方案都必须能够在不执行复制的情况下包装现有的复杂整数缓冲区。也就是说,我希望能够使用PyArray_SimpleNewFromData()
将缓冲区公开给 Python,而不必先复制缓冲区。缓冲区已经是交错的实数/虚数格式,并且可以是int8_t
或的数组int16_t
。