我正在尝试在 pythran 中进行 numpy
View 转换(我相信在 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 中重新解释强制转换数组?
最佳答案
据我所知,没有直接的方法可以在 Pythran 中执行数组的重新解释转换。 Pythran 不支持 numpy.view 函数,并且没有可以直接使用的等效函数。它只是 Pythran 的一个限制,因为它只支持 numpy 功能的一个子集。
您最好的选择可能是使用 numpy 在 Python 中执行转换,然后将结果传递给 Pythran 函数。如果转换操作不是代码中的主要瓶颈,那么这可能是可行的。
或者您可以使用其他编译器,例如 Cython(如果您熟悉)。
关于python - 如何在 pythran/numpy 中查看强制转换/重新解释强制转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76183393/