繁体   English   中英

Numpy C-API:PyArrayObject 提供错误的维度

[英]Numpy C-API: PyArrayObject provides wrong dimensions

我正在尝试访问 C 中的 numpy 数组的数组维度。

源文件

static PyObject*
array_dims(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kwds)
{
    PyArrayObject *arg1=NULL;
    int i;

    // check for exactly one input argument and parse it to arg1
    if (!PyArg_ParseTuple(args, "O!", &PyArray_Type, &arg1)) return NULL;

    for(i = 0; i < PyArray_NDIM(arg1); i++){
        printf("%d \n", PyArray_DIMS(arg1)[i]);
    }

    return(Py_None);
}

运行文件

import numpy as np

arr = np.asarray([[1,2,3],[3,4,5],[7,8,9]])
src.dims(arr)

控制台输出

3
0

第一个是正确的,但对于 i=1,形状也应该是 3。 进一步的调查表明,对于 i=2(手动调用),输出也是“3”,可能是偶然的,也可能是一些系统错误。

我也尝试过 arg1->dimensions 或 PyArray_SHAPE(arg1) 但两者都显示了相同的结果。

似乎这是最新的 numpy 版本和 Python 3.4 的某种错误。 切换到 Python 3.5 后,该函数提供了预期的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM