将 numpy 数组转换为 ctypes 数组时出现问题
Problem converting numpy array to ctypes array
我在将 numpy 数组转换为 ctypes 数组时遇到问题。我没有收到任何错误或异常,但 ctypes 数组与原始数组完全不同。
def convarray(x):
arr = x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint64) )
print(arr[0], arr[1], arr[2])
print(x.shape, x.dtype, x)
...
打印语句的结果是:
8 399 1099526307842
(958150,) uint64 [ 8 8 8 ... 92 94 96]
如您所见,前三个元素中,只有一个是正确的。
为什么会这样?
我正在使用 Numpy 1.21.0 和 Python 3.9.2
我发现了问题所在:作为 x 传递的数组是通过从二维数组切片得到的,因此其基础数据也是二维的。设置 x = x.copy()
通过创建一个包含一维数据的新数组解决了这个问题。
我在将 numpy 数组转换为 ctypes 数组时遇到问题。我没有收到任何错误或异常,但 ctypes 数组与原始数组完全不同。
def convarray(x):
arr = x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint64) )
print(arr[0], arr[1], arr[2])
print(x.shape, x.dtype, x)
...
打印语句的结果是:
8 399 1099526307842
(958150,) uint64 [ 8 8 8 ... 92 94 96]
如您所见,前三个元素中,只有一个是正确的。
为什么会这样?
我正在使用 Numpy 1.21.0 和 Python 3.9.2
我发现了问题所在:作为 x 传递的数组是通过从二维数组切片得到的,因此其基础数据也是二维的。设置 x = x.copy()
通过创建一个包含一维数据的新数组解决了这个问题。