3

我阅读了我能找到的关于 NumPy C API 的文档,但仍然无法确定是否有可能使用 C API 构造矩阵对象——而不是二维数组。该函数适用于数学矩阵,如果用户调用矩阵乘法时忘记将此值从数组转换为矩阵(乘法和求幂是矩阵子类的唯一区别),我不想要奇怪的结果。

4

2 回答 2

6

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

PyObject *numpy = PyImport_ImportModule("numpy");
PyObject *numpy_matrix = PyObject_GetAttrString(numpy, "matrix");
PyObject *my_matrix = PyObject_CallFunction(numpy_matrix, "(s)", "0 0; 0 0");

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

编辑:改为对numpy.zeros/numpy.ndarray的引用numpy.matrix

我还找到了一个很好的教程:http ://starship.python.net/crew/hinsen/NumPyExtensions.html

于 2009-02-21T19:07:29.103 回答
3

numpy.matrix是在numpy/core/defmatrix.py中定义的普通类。您可以使用 C API 将其构造为 Python 中用户定义类的任何其他实例。

于 2009-02-21T19:06:20.947 回答