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

もともと、4 つの配列からなる配列がありました。次の行は、それを 4 つの配列変数に抽出します。

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

numpy 配列の代わりにネイティブの Python オブジェクトが必要な場合は、リスト内包表記を使用します。

objs = [y for y in a]

于 2011-10-23T17:59:47.077 に答える