【问题标题】:Problem converting numpy array to ctypes array将numpy数组转换为ctypes数组的问题
【发布时间】:2021-08-14 21:15:22
【问题描述】:

我在将 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

【问题讨论】:

    标签: python arrays numpy ctypes


    【解决方案1】:

    我发现了问题所在:作为 x 传递的数组是通过从二维数组切片导出的,因此其基础数据也是二维的。设置x = x.copy()通过创建一维数据的新数组解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多