gpt4 book ai didi

python - Numpy C-API : PyArrayObject provides wrong dimensions

转载 作者:行者123 更新时间:2023-11-30 16:48:31 29 4
gpt4 key购买 nike

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

src.c

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);
}

run.py

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 后,该函数提供了预期的行为。

关于python - Numpy C-API : PyArrayObject provides wrong dimensions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937977/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com