Pergunta

Eu li a documentação no NumPy C API que eu poderia encontrar, mas ainda não foi capaz de descobrir se existe a possibilidade de construir um objeto matriz com C API - e não uma matriz bidimensional. A função é destinado ao trabalho com matrizes matemáticas, e eu não quero resultados estranhos se o usuário chama a multiplicação de matrizes esquecendo-se de converter este valor a partir de uma matriz para uma matriz (multiplicação e exponenciação sendo a única diferença que subclasse matriz tem).

Foi útil?

Solução

numpy.matrix é uma classe comum definido na numpy / núcleo / defmatrix.py . Você pode construí-lo usando C API como qualquer outra instância da classe definida pelo usuário em Python.

Outras dicas

Você pode chamar qualquer exigível python com as funções 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");

Isto irá criar uma my_matrix matriz de tamanho 2x2.

EDIT:. referências alterado para numpy.zeros / numpy.ndarray para numpy.matrix vez

Eu também achei um bom tutorial sobre o assunto: http://starship.python.net/ Crew / Hinsen / NumPyExtensions.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top