有什么方法可以使用 C API 创建 NumPy 矩阵吗?

发布于 2024-07-14 04:05:13 字数 139 浏览 4 评论 0原文

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

I read the documentation on NumPy C API I could find, but still wasn't able to find out whether there is a possibility to construct a matrix object with C API — not a two-dimensional array. The function is intended for work with math matrices, and I don't want strange results if the user calls matrix multiplication forgetting to convert this value from an array to a matrix (multiplication and exponentiation being the only difference that matrix subclass has).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

携余温的黄昏 2024-07-21 04:05:13

您可以使用 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

You can call any python callable with the PyObject_Call* functions.

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

This will create a matrix my_matrix of size 2x2.

EDIT: Changed references to numpy.zeros/numpy.ndarray to numpy.matrix instead.

I also found a good tutorial on the subject: http://starship.python.net/crew/hinsen/NumPyExtensions.html

つ低調成傷 2024-07-21 04:05:13

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

numpy.matrix is an ordinary class defined in numpy/core/defmatrix.py. You can construct it using C API as any other instance of user-defined class in Python.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文