Любой способ создать матрицу NumPy с C API? - PullRequest
2 голосов
/ 21 февраля 2009

Я прочитал документацию по NumPy C API, которую смог найти, но все еще не смог выяснить, есть ли возможность построить матричный объект с C API, а не двумерный массив. Функция предназначена для работы с математическими матрицами, и мне не нужны странные результаты, если пользователь вызывает умножение матриц, забывая преобразовать это значение из массива в матрицу (умножение и возведение в степень - единственное отличие, которое имеет подкласс матрицы).

Ответы [ 2 ]

6 голосов
/ 21 февраля 2009

Вы можете вызвать любой вызываемый 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

3 голосов
/ 21 февраля 2009

numpy.matrix - это обычный класс, определенный в numpy / core / defmatrix.py . Вы можете создать его, используя C API, как любой другой экземпляр пользовательского класса в Python.

...