Есть какой-нибудь способ создать NumPy-матрицу с помощью C API?

StackOverflow https://stackoverflow.com/questions/573487

  •  05-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

Редактировать: Изменены ссылки на numpy.zeros/numpy.ndarray Для numpy.matrix вместо этого.

Я также нашел хороший учебник по этому предмету: http://starship.python.net/crew/hinsen/NumPyExtensions.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top