python - 如何在 pythran/numpy 中查看强制转换/重新解释强制转换?

标签 python numpy reinterpret-cast pythran

我正在尝试在 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/

相关文章:

python - 有没有办法在 tf.data.Dataset w/tf.py_func 中传递字典?

c++ - 虚函数并强制转换为 void 并返回

c++ - 了解 reinterpret_cast

c++ - 将 STL complex<double> 转换为 fftw_complex 的问题

python - 属性错误 : module 'numpy' has no attribute 'matlib'

python - python 在 for 循环中效率低得令人难以置信,还是只是我的代码?

python - 列表元素的相似性

python - 字典的值和键都可以是整数吗?

python - 奇怪的行为 : apparently a numpy nan in a pandas dataframe showing up as dtype ('float64' )

python - 使用 scipy.optimize.curve_fit - ValueError 和 minpack.error 拟合 2D 高斯函数