How to view-cast / reinterpret-cast in pythran / numpy?

问题描述 投票:0回答:1

我正在尝试在 pythran 中进行

numpy
视图投射(我相信
C/C++
土地将被称为重新解释投射):

以下愚蠢的虚构示例采用无符号 8 字节整数数组,将它们重新解释为无符号 4 字节整数的两倍,切掉第一个和最后一个(这也没有触及实际数据;它只是改变了“基本指针”)并再次重新解释为无符号 8 字节,总效果是移码。 (我们会在其他时间担心字节顺序。)

import numpy as np

A = np.arange(5,dtype="u8")
a = A.view("u4")
B = a[1:9].view("u8")
A
# array([0, 1, 2, 3, 4], dtype=uint64)
B
# array([ 4294967296,  8589934592, 12884901888, 17179869184], dtype=uint64)
np.shares_memory(A,B)
# True

我不能让 pythran 直接翻译这个,因为它不知道

.view
属性。

有没有办法重新解释 pythran 中的转换数组?

python numpy reinterpret-cast pythran
1个回答
1
投票

据我所知,没有直接的方法可以在 Pythran 中执行数组的重新解释转换。 Pythran 不支持 numpy.view 函数,并且没有可以替代的直接等效函数。它只是 Pythran 的一个限制,因为它只支持 numpy 功能的一个子集。

你最好的选择可能是使用 numpy 在 Python 中执行转换,然后将结果传递给 Pythran 函数。如果转换操作不是代码中的主要瓶颈,那可能是可行的。

或者您可以使用不同的编译器,例如 Cython,如果您熟悉的话。

© www.soinside.com 2019 - 2024. All rights reserved.