سؤال

قرأت الوثائق على API Numpy C، لكنني لم أتمكن من معرفة ما إذا كان هناك إمكانية إنشاء كائن مصفوفة مع API C - وليس صفيف ثنائي الأبعاد. الوظيفة مخصصة للعمل مع مصفوفات الرياضيات، ولا أريد نتائج غريبة إذا استدعي المستخدم مصفوفة الضرب النسيان لتحويل هذه القيمة من صفيف إلى مصفوفة (الضرب والأسترال هو الفرق الوحيد الذي يحتوي عليه مصفوفة الفئة الفرعية).

هل كانت مفيدة؟

المحلول

numpy.matrix هي فئة عادية محددة في numpy / core / defmatrix.py. وبعد يمكنك إنشاءه باستخدام C واجهة برمجة تطبيقات C كأي مثيل آخر للفئة المعرفة من قبل المستخدم في Python.

نصائح أخرى

يمكنك استدعاء أي python callable مع 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top