numpy - 有没有办法将在 C 中创建的 numpy Array 强制转换为 MaskedArray?
问题描述
我想使用已经存在的数据在 C 中创建一个 numpy.mp.MaskedArray。我可以像这样创建一个 numpy.Array:
PyObject *arr = PyArray_SimpleNewFromData(...)
但我希望呈现给图书馆用户的对象是 MaskedArray(Array 的子类),而不是 Array。有没有办法做到这一点?
解决方案
自答:
// 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);
推荐阅读
- cocoa - 为使 Apple Mail 插件与最新版本的 Apple Mail 一起工作而指定的正确 info.plist 条目是什么?
- autodesk-forge - 在查看器中伪造查看器隔离多模型
- python - 需要帮助按列对大型 Numpy 矩阵进行排序,然后遍历列。Argsort 似乎太慢了
- r - 获取不在公式中的解释变量的系数
- javascript - socket.id 随着时间的推移是唯一的,它应该保密吗?
- sql - 为什么即使我清楚地引用了两个不同的表,此错误消息仍会不断弹出?
- windows - docker desktop kubernetes - 如何使用 ClusterFirstWithHostNet 映射端口
- javascript - 如何仅在尚未加载数据时使用 fetch
- c++ - 在 rust 中制作 NmApi(网络监视器 API)示例。编译成功,进程执行无错误但没有出现抓包文件
- r - r 中具有分钟格式的向量自回归 (VAR) 时间序列