Your code looks like it has some confusion in it -- ctypes.POINTER()
creates a new ctypes pointer class, not a ctypes instance. Anyway, the easiest way to pass a NumPy array to ctypes code is to use the numpy.ndarray
's ctypes
attribute's data_as
method. Just make sure the underlying data is the right type first. For example:
import ctypes
import numpy
c_float_p = ctypes.POINTER(ctypes.c_float)
data = numpy.array([[0.1, 0.1], [0.2, 0.2], [0.3, 0.3]])
data = data.astype(numpy.float32)
data_p = data.ctypes.data_as(c_float_p)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…