有没有办法用C API创建NumPy矩阵?

2 python numpy python-c-api

我阅读了我能找到的关于NumPy C API的文档,但仍然无法确定是否有可能使用C API构建矩阵对象 - 而不是二维数组.该函数用于处理数学矩阵,如果用户调用矩阵乘法,忘记将数值从数组转换为矩阵(乘法和取幂是矩阵子类的唯一区别),我不希望得到奇怪的结果.

Mar*_*rot 6

您可以使用这些PyObject_Call*函数调用任何可调用的python .

PyObject *numpy = PyImport_ImportModule("numpy");
PyObject *numpy_matrix = PyObject_GetAttrString(numpy, "matrix");
PyObject *my_matrix = PyObject_CallFunction(numpy_matrix, "(s)", "0 0; 0 0");
Run Code Online (Sandbox Code Playgroud)

这将创建一个my_matrix大小为2x2 的矩阵.

编辑:改变引用numpy.zeros/ numpy.ndarraynumpy.matrix代替.

我还找到了一个关于这个主题的好教程:http://starship.python.net/crew/hinsen/NumPyExtensions.html