迁移到numpy api 1.7 我有这个代码(在我的C++ Python模块中的main函数):< /P>

迁移到numpy api 1.7 我有这个代码(在我的C++ Python模块中的main函数):< /P>,python,c++,numpy,Python,C++,Numpy,我想迁移到numpy api 1.7: #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION 我应该如何修改我的函数以在新版本的c-api中复制结果?你能给我举个例子吗?嗯,这很简单: static PyObject* FMM(PyObject* self, PyObject* args) { PyArrayObject *model_obj; PyArrayObject *time_obj; PyArrayObject *

我想迁移到numpy api 1.7:

#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
我应该如何修改我的函数以在新版本的c-api中复制结果?你能给我举个例子吗?

嗯,这很简单:

static PyObject* FMM(PyObject* self, PyObject* args)
{
    PyArrayObject *model_obj;
    PyArrayObject *time_obj;
    PyArrayObject *accepted_obj;
    PyArrayObject *lat_obj;
    PyArrayObject *lon_obj;
    PyArrayObject *h_obj;
    int N;

    if (!PyArg_ParseTuple(args, "OOOOOOi", &model_obj, &time_obj, &accepted_obj, &lat_obj, &lon_obj, &h_obj, &N))
    {
        Py_INCREF(Py_None);
        return Py_None;
    }

    //PyObject *model = PyArray_FROM_OTF(model_obj, NPY_FLOAT, NPY_INOUT_ARRAY);
    //PyObject *time = PyArray_FROM_OTF(time_obj, NPY_FLOAT, NPY_INOUT_ARRAY);
    //PyObject *accepted = PyArray_FROM_OTF(accepted_obj, NPY_BOOL, NPY_INOUT_ARRAY);
    //PyObject *lat = PyArray_FROM_OTF(lon_obj, NPY_DOUBLE, NPY_INOUT_ARRAY);
    //PyObject *lon = PyArray_FROM_OTF(lon_obj, NPY_DOUBLE, NPY_INOUT_ARRAY);
    //PyObject *h = PyArray_FROM_OTF(h_obj, NPY_DOUBLE, NPY_INOUT_ARRAY);

    float *MODEL    = static_cast<float *>(PyArray_DATA(model_obj));
    float *TIME     = static_cast<float *>(PyArray_DATA(time_obj));
    bool *ACCEPTED  = static_cast<bool *>(PyArray_DATA(accepted_obj));
    double *LAT     = static_cast<double *>(PyArray_DATA(lat_obj));
    double *LON     = static_cast<double *>(PyArray_DATA(lon_obj));
    double *H       = static_cast<double *>(PyArray_DATA(h_obj));
    _FMM(MODEL, TIME, ACCEPTED, LAT, LON, H, N);


    Py_INCREF(Py_None);
    return Py_None;
}
静态PyObject*FMM(PyObject*self,PyObject*args)
{
PyarayObject*模型对象;
PyarayObject*时间对象;
PyarayObject*已接受的对象;
PyArrayObject*lat_obj;
PyArrayObject*lon_obj;
PyArrayObject*h_obj;
int N;
if(!PyArg_ParseTuple(args,“OOOOOOi”、&model_obj、&time_obj、&accepted_obj、&lat_obj、&lon_obj、&h_obj、&N))
{
Py_增量(Py_无);
返回Py_None;
}
//PyObject*model=PyArray_FROM_OTF(model_obj,NPY_FLOAT,NPY_INOUT_数组);
//PyObject*time=PyArray\u FROM\u OTF(time\u obj,NPY\u FLOAT,NPY\u INOUT\u数组);
//PyObject*accepted=PyArray\u FROM\u OTF(accepted\u obj、NPY\u BOOL、NPY\u INOUT\u数组);
//PyObject*lat=PyArray_FROM_OTF(lon_obj,NPY_DOUBLE,NPY_INOUT_数组);
//PyObject*lon=PyArray_FROM_OTF(lon_obj,NPY_DOUBLE,NPY_INOUT_数组);
//PyObject*h=PyArray_FROM_OTF(h_obj,NPY_DOUBLE,NPY_INOUT_数组);
float*MODEL=static_cast(PyArray_数据(MODEL_obj));
float*TIME=static_cast(PyArray_数据(TIME_obj));
bool*ACCEPTED=static_cast(PyArray_DATA(ACCEPTED_obj));
double*LAT=static_cast(PyArray_数据(LAT_obj));
double*LON=static_cast(PyArray_DATA(LON_obj));
double*H=静态_cast(PyArray_DATA(H_obj));
_FMM(型号、时间、验收、纬度、经度、H、N);
Py_增量(Py_无);
返回Py_None;
}
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
static PyObject* FMM(PyObject* self, PyObject* args)
{
    PyArrayObject *model_obj;
    PyArrayObject *time_obj;
    PyArrayObject *accepted_obj;
    PyArrayObject *lat_obj;
    PyArrayObject *lon_obj;
    PyArrayObject *h_obj;
    int N;

    if (!PyArg_ParseTuple(args, "OOOOOOi", &model_obj, &time_obj, &accepted_obj, &lat_obj, &lon_obj, &h_obj, &N))
    {
        Py_INCREF(Py_None);
        return Py_None;
    }

    //PyObject *model = PyArray_FROM_OTF(model_obj, NPY_FLOAT, NPY_INOUT_ARRAY);
    //PyObject *time = PyArray_FROM_OTF(time_obj, NPY_FLOAT, NPY_INOUT_ARRAY);
    //PyObject *accepted = PyArray_FROM_OTF(accepted_obj, NPY_BOOL, NPY_INOUT_ARRAY);
    //PyObject *lat = PyArray_FROM_OTF(lon_obj, NPY_DOUBLE, NPY_INOUT_ARRAY);
    //PyObject *lon = PyArray_FROM_OTF(lon_obj, NPY_DOUBLE, NPY_INOUT_ARRAY);
    //PyObject *h = PyArray_FROM_OTF(h_obj, NPY_DOUBLE, NPY_INOUT_ARRAY);

    float *MODEL    = static_cast<float *>(PyArray_DATA(model_obj));
    float *TIME     = static_cast<float *>(PyArray_DATA(time_obj));
    bool *ACCEPTED  = static_cast<bool *>(PyArray_DATA(accepted_obj));
    double *LAT     = static_cast<double *>(PyArray_DATA(lat_obj));
    double *LON     = static_cast<double *>(PyArray_DATA(lon_obj));
    double *H       = static_cast<double *>(PyArray_DATA(h_obj));
    _FMM(MODEL, TIME, ACCEPTED, LAT, LON, H, N);


    Py_INCREF(Py_None);
    return Py_None;
}