【发布时间】:2017-01-20 12:21:27
【问题描述】:
我有一个一维浮点数组(来自 C 空间),我想在 python 空间中读取它,并且副本为零。到目前为止,我所做的(主要是阅读)是:
// wrap c++ array as numpy array
//From Max http://stackoverflow.com/questions/10701514/how-to-return-numpy-array-from-boostpython
boost::python::object exposeNDarray(float * result, long size) {
npy_intp shape[1] = { size }; // array size
PyObject* obj = PyArray_SimpleNewFromData(1, shape, NPY_FLOAT, result);
/*PyObject* obj = PyArray_New(&PyArray_Type, 1, shape, NPY_FLOAT, // data type
NULL, result, // data pointer
0, NPY_ARRAY_CARRAY_RO, // NPY_ARRAY_CARRAY_RO for readonly
NULL);*/
handle<> array( obj );
return object(array);
}
PyArray_New 注释部分在功能上与PyArray_SimpleNewFromData 相同。
我的问题是这个一维数组实际上应该是一个 3 维 ndarray。我可以控制我的 result 浮点数组的构造方式,如果可能的话,我希望将连续的内存块解释为 3 维数组。
我认为这可以通过指定 shape 变量来完成,但是我找不到任何关于如何解释内存的参考。
假设我需要我的数组看起来像:np.empty((x,y,z))。当我在 shape 变量中指定时,我的 result 数组的哪个部分将构成第一个维度,第二个维度的哪个部分等等?
【问题讨论】: