给定一个内置的四元数数据类型,如何将四元数的numpy数组看作一个额外维度为4的浮点数组(而不复制内存)?在
Numpy内置了对浮动和复杂浮动的支持。我需要使用quaternions——它概括了复数,但是它们没有两个分量,而是有四个分量。已经有了使用C API将四元数直接合并到numpy中的a very nice package,它似乎可以非常快速地完成所有操作。还有一些四元数函数I need to add to it,但我想我基本上可以处理这些。在
不过,我也希望能够在其他需要使用awesome ^{
(我很有信心这些数据是连续存储在内存中的,我想这是简单查看它们所必需的。具体来说,^{
结果很简单。numpy的魔力意味着它已经成为可能。考虑到这一点,我尝试了以下复数:
这正是我想要的。在某种程度上,同样的基本思想也适用于四元数类型。我想内部结构仅仅依赖于
elsize
,除以sizeof(float)
,然后用它来设置最后一个维度中的新大小???在为了回答我自己的问题,同样的想法也适用于四元数模块:
^{pr2}$在我的笔记本电脑上,视图转换和重塑组合起来似乎需要1微秒的时间,这与输入数组的大小无关(大概是因为除了一些基本python对象中的几个成员外,没有内存复制)。在
上述方法适用于简单的一维四元数数组。要将其应用于常规形状,我只需在四元数名称空间中编写一个函数:
不同的形状似乎不会显著降低功能。在
此外,很容易将浮点数组转换回四元数数组:
^{4}$相关问题 更多 >
编程相关推荐