2

我有

X 作为输入 --- 这是 dtype 对象,具有以下结构 x=[[1,2,3,4...n 个元素],[1 个元素],[1,2,...m 个元素], [1 个元素]]

为了模仿输入...

>>> from numpy import *
>>> x=array([array([1,2,3,4,5]),array([1]),array([1,2,3,4,5,6,7,8]),array([1])],dtype=object)
>>> x
array([[1 2 3 4 5], [1], [1 2 3 4 5 6 7 8], [1]], dtype=object)

我将 X 作为参数传递给我的 Python C 扩展作为 PyArray_Object

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

    PyArrayObject *array,*p1,*p2;
    int n,j;

    if (!PyArg_ParseTuple(args, "O!",&PyArray_Type, &array))
        return NULL;
    n=array->nd;

    if(n!=1 || array->descr->type_num!=PyArray_OBJECT) {
        PyErr_SetString(PyExc_ValueError, "array must be one-dimensional and of Object type");
        return NULL;
    }
    j=array->dimensions[0];
    /* ...... */
}

现在我被困在这里,因为我不确定如何将其拆分为 4 个对象请任何人都可以给我一些关于此的指示...

4

1 回答 1

1

最初你有一个由四个数组组成的数组。以下行将其提取为四个数组变量:

a,b,c,d=x[0],x[1],x[2],x[3]

如果您需要本机 Python 对象而不是 numpy 数组,请使用列表推导:

objs = [y for y in a]

于 2011-10-23T17:59:47.077 回答