python - 使用 C 将 numpy 数组对象拆分为两个不同大小的 vector

标签 python c numpy python-c-api

我有

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 作为 PyArray_Object 的参数传递给我的 Python C 扩展

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 个对象 请任何人给我一些关于这个的指示......

最佳答案

最初您有一个包含四个数组的数组。以下行将其提取到四个数组变量中:

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

如果您需要原生 Python 对象而不是 numpy 数组,请使用列表理解:

objs = [y for y in a]

关于python - 使用 C 将 numpy 数组对象拆分为两个不同大小的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902740/

相关文章:

python - 如何按降序对二维数组的一半进行排序(numpy)

python - 我可以将 decode(errors ="ignore") 设置为 Python 2.7 程序中所有字符串的默认值吗?

python - 导入时,为什么只指定了特定部分却加载了整个模块?

C:使用指针作为字符串:不可预知的行为

python - 如何在每个维度上调整体积图像的大小或形状?

python - 如何将 numpy random.choice 应用于概率值矩阵(矢量化解决方案)

python - Python请求抛出SSLError

python - 是否可以在 scikit-learn 中打印决策树?

有人可以澄清这段代码吗?

c - 空指针中的字节数