我想使用已存在的数据在C中创建numpy.mp.MaskedArray。我可以这样创建一个numpy.Array:
PyObject *arr = PyArray_SimpleNewFromData(...)
但是我希望呈现给库用户的对象是MaskedArray(Array的子类),而不是Array。有什么办法吗?
答案 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);