我应该如何将ctypes指针转换回numpy数组?我是python和fortran的初学者 - 如果这是微不足道的话,请提前道歉。
考虑代码:
import numpy as np
x = np.array(np.arange(6)) + 0.5
y = x.ctypes.data_as(ctypes.POINTER(ctypes.c_double))
我采用了一个numpy数组'x'并将其转换为适合作为数组'y'传入fortran子程序的形式。但是,我该如何进行反向操作?
[Q1] y是一个ctypes指针吗? Python称它在0x7ff7186178c8>处是< main .LP_c_double。这是什么意思?
[Q2]从y开始,我怎样才能获得x,因为我知道数组x有多长?我试过了:
ctypes.cast(y, ctypes.POINTER(ctypes.c_double)).contents.value
这将返回数组的第一个元素。但是,尝试使用以下命令访问下一个元素失败:
ctypes.cast(y, ctypes.POINTER(ctypes.c_double)).contents.value
感谢您的帮助。