我阅读了我能找到的NumPy C API的文档,但仍然无法确定是否有可能使用C API构建矩阵对象 - 而不是二维数组。该函数用于处理数学矩阵,如果用户调用矩阵乘法,忘记将数值从数组转换为矩阵(乘法和取幂是矩阵子类唯一的区别),我不希望得到奇怪的结果。 / p>
答案 0 :(得分: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");
这将创建一个大小为2x2的矩阵my_matrix
。
编辑:将对numpy.zeros
/ numpy.ndarray
的引用更改为numpy.matrix
。
我还找到了关于这个主题的好教程:http://starship.python.net/crew/hinsen/NumPyExtensions.html
答案 1 :(得分:3)
numpy.matrix
是numpy/core/defmatrix.py中定义的普通类。您可以使用C API将其构建为Python中的任何其他用户定义类实例。