Numpy:从指针数组中检索数组
我正在写一段代码,在这里我创建了一个numpy指针数组。它们指向其他阵列 我可以成功地(没有生成异常)将指针存储在指针数组的一个元素中。但我无法将此指针重新转换为numpy数组 当指针存储在一个numpy指针数组中时,问题就特别出现了。当我将指针存储在普通pyhon变量中时,我可以成功地存储和检索数组 注意,由于性能原因,我不能仅仅创建一个python指针列表 此代码适用于: 而Numpy:从指针数组中检索数组,numpy,ctypes,Numpy,Ctypes,我正在写一段代码,在这里我创建了一个numpy指针数组。它们指向其他阵列 我可以成功地(没有生成异常)将指针存储在指针数组的一个元素中。但我无法将此指针重新转换为numpy数组 当指针存储在一个numpy指针数组中时,问题就特别出现了。当我将指针存储在普通pyhon变量中时,我可以成功地存储和检索数组 注意,由于性能原因,我不能仅仅创建一个python指针列表 此代码适用于: 而v将返回ic中设置的初始数组 此代码不起作用: 最后一行将给出以下例外情况: File "/opt/inte
v
将返回ic
中设置的初始数组
此代码不起作用:
最后一行将给出以下例外情况:
File "/opt/intel/intelpython3/lib/python3.5/ctypes/__init__.py", line 484, in cast
return _cast(obj, obj, typ)
ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type
File”/opt/intel/intelpython3/lib/python3.5/ctypes/_init__.py”,第484行,强制转换
返回式铸造(obj,obj,典型)
ctypes.ArgumentError:参数1::错误类型
问题:如何从指针的numpy数组存储和检索numpy数组?对数组进行索引将返回一个
np.int32
对象,而不是本机Pythonint
:
In [118]: type(pointer)
Out[118]: int
In [119]: type(pointers[0])
Out[119]: numpy.int32
使用项
提取整数:
In [120]: type(pointers[0].item())
Out[120]: int
您还可以首先将数组转换为列表
In [121]: type(pointers.tolist()[0])
Out[121]: int
指针
在构造时,它是一个np.int32
dtype
In [123]: pointers = numpy.zeros(5, dtype=ctypes.POINTER(ctypes.c_int))
In [124]: pointers.dtype
Out[124]: dtype('int32')
或者创建一个对象数据类型数组
In [125]: pointers = numpy.zeros(5, dtype=object)
In [126]: pointers[0] = pointer
In [127]: pointers
Out[127]: array([157379928, 0, 0, 0, 0], dtype=object)
In [128]: type(pointers[0])
Out[128]: int
对数组进行索引将返回一个
np.int32
对象,而不是本机Pythonint
:
In [118]: type(pointer)
Out[118]: int
In [119]: type(pointers[0])
Out[119]: numpy.int32
使用项
提取整数:
In [120]: type(pointers[0].item())
Out[120]: int
您还可以首先将数组转换为列表
In [121]: type(pointers.tolist()[0])
Out[121]: int
指针
在构造时,它是一个np.int32
dtype
In [123]: pointers = numpy.zeros(5, dtype=ctypes.POINTER(ctypes.c_int))
In [124]: pointers.dtype
Out[124]: dtype('int32')
或者创建一个对象数据类型数组
In [125]: pointers = numpy.zeros(5, dtype=object)
In [126]: pointers[0] = pointer
In [127]: pointers
Out[127]: array([157379928, 0, 0, 0, 0], dtype=object)
In [128]: type(pointers[0])
Out[128]: int