有没有办法将C语言中创建的numpy数组强制转换为MaskedArray?

时间:2018-08-10 17:11:57

标签: numpy

我想使用已存在的数据在C中创建numpy.mp.MaskedArray。我可以这样创建一个numpy.Array:

PyObject *arr = PyArray_SimpleNewFromData(...)

但是我希望呈现给库用户的对象是MaskedArray(Array的子​​类),而不是Array。有什么办法吗?

1 个答案:

答案 0 :(得分:0)

自我回答:

// Create the numpy array
PyObject *arr = PyArray_NewFromDescr(&PyArray_Type, descr, 1,
        &longCount, &pointSize, data, NPY_ARRAY_WRITEABLE, nullptr);

// Wrap the created array in a MaskedArray.
PyObject *module = PyImport_ImportModule("numpy.ma");
PyObject *dict = PyModule_GetDict(module);
PyObject *o = PyDict_GetItemString(dict, "MaskedArray");

PyObject *args = PyTuple_New(1);
PyTuple_SetItem(args, 0, arr);

m_directArray = PyObject_CallObject(o, args);