Python C++;指向Numpy数组的指针
简要说明: 如果内存中有指向数组的指针、数组的类型和元素数,是否有一种有效的方法来生成numpy数组 更多详细信息:Python C++;指向Numpy数组的指针,python,c++,arrays,numpy,Python,C++,Arrays,Numpy,简要说明: 如果内存中有指向数组的指针、数组的类型和元素数,是否有一种有效的方法来生成numpy数组 更多详细信息: 我正在使用一个python框架,它有一个object.GetData()命令,该命令应该返回指向该对象的数据(35000 int8的数组)的指针 我应该能够通过 arr = numpy.frombuffer(object.GetData(),count=35000,dtype="int8") 但这似乎不起作用。我收到一条错误消息ValueError:buffer小于请求的大小。
我正在使用一个python框架,它有一个
object.GetData()
命令,该命令应该返回指向该对象的数据(35000 int8的数组)的指针
我应该能够通过
arr = numpy.frombuffer(object.GetData(),count=35000,dtype="int8")
但这似乎不起作用。我收到一条错误消息ValueError:buffer小于请求的大小
。更改长度,我可以让它输出一个数组,但长度通常小于20个整数(通常为0或1个整数)
我相信我可以通过
hex(id(object.GetData()))
看起来它给出了地址(例如0x10fd8c670),但我不知道这是否是实际地址
我在Python中比C++更舒服,但是C++代码中可能有bug。GETDATA的C++代码是:
const _Tp* GetData() const
{
// Return a const pointer to the internal data
return (fData.size() > 0 ) ? &(fData)[0] : NULL;
}
其中,fdata通过以下方式初始化为向量类型:
VecType fData;
现在,我可以通过对象访问对象数据的每个元素。在(I)
命令中,我是对象数据数组的索引,但是以这种方式将每个元素加载到numpy数组中非常慢,而且我正在处理大量数据。作为参考,C++代码中的AT命令这样做:
_Tp At(size_t i) const
{
return fData.at(i);
}
任何帮助都将不胜感激。我对指针没有太多的经验,甚至在Python中使用指针也不多,但是我想用Python来解决这个问题,而不是重新编写C++中的所有代码。谢谢 “应该返回指向数据的指针”-请稍候。“指针”是指什么数据类型?此返回值是ctypes指针吗?记忆视图?表示内存地址的整数?这是怎么一回事?