使用C API创建NumPy矩阵的任何方法?

3

我阅读了我能找到的NumPy C API文档,但仍然无法确定是否存在使用C API构建矩阵对象的可能性,而不是二维数组。该函数旨在处理数学矩阵,并且如果用户调用矩阵乘法时忘记将此值从数组转换为矩阵,则不希望出现奇怪的结果(矩阵子类具有乘法和指数运算的唯一区别)。


“矩阵”是什么意思?是指numpy.matrix类吗? - jfs
2个回答

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
OP 提问 numpy.matrix 但是 zeros 返回的是 ndarray - jfs

3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接