PyArrayObject没有成员

时间:2017-06-16 13:08:49

标签: python c++ numpy python-c-extension

我正在尝试为我的python / numpy代码编写一个简单的c ++扩展。但是,我无法编译扩展脚本,因为函数输入中的PyArrayObject没有成员。在我看来,我做的就像this post一样,但我想我错过了一些东西。这是一个无法编译的示例,因为我尝试检索维度成员:

#include <Python.h>
#include <stdio.h>
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
#include "numpy/arrayobject.h"

static PyObject *function(PyObject *self, PyObject *args) { 

    PyObject *input;
    PyArrayObject *array;

    if (!PyArg_ParseTuple(args, "O", &input))
        return NULL;

    array= (PyArrayObject *)
        PyArray_ContiguousFromObject(input, NPY_DOUBLE, 2, 2);
    long n=array->dimensions[1];
}

这是使用MVS 14.0 c ++编译器在linux系统和Windows 7计算机上编译的,因此问题似乎与平台无关。

Python版本:3.5

Windows系统的异常输出:

paneltime/cfunctions.cpp(20): error C2039: 'dimensions': is not a member of 'tagPyArrayObject'c:\anaconda3\lib\site-packages\numpy\core\include\numpy\ndarraytypes.h(692): note: see declaration of 'tagPyArrayObject'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\cl.exe' failed with exit status 2

1 个答案:

答案 0 :(得分:1)

关注发布的示例后,我也遇到了这个问题。我相信不推荐使用维度成员。而应使用PyArray_DIM或PyArray_DIMS(参见NumPy docs

例如:

long n=PyArray_DIM(array,1);