Как отмечалось выше, класс np.matrix имеет семантику, очень похожую на массив matlab.
Однако, если ваша цель состоит в том, чтобы выучить numpy как рыночный навык, я настоятельно рекомендую вам полностью принять концепцию ndarray; Хотя есть некоторая историческая правда в том, что называть numpy портом matlab, это немного оскорбительно, поскольку ndarray является одним из наиболее убедительных объективных концептуальных улучшений numpy по сравнению с matlab, помимо его цены.
TLDR; вам будет трудно не бросить ваше приложение, если вы заявите, что знаете numpy, но ваши примеры кода пахнут как портированный matlab.
Изменить:
В прошлый раз, когда я оценивал его, его было не совсем там , но там было довольно много действий, поэтому вам также следует рассмотреть (бесплатный и открытый исходный код) Math.NET Numerics .
Сейчас, глядя, кажется, что они закончили свою новую версию , и добавили поддержку разреженных матриц, а также другие приятные вещи.
Если вам нужна более надежная поддержка, к сожалению, вам действительно нужно использовать коммерческие пакеты для .NET atm.
Есть два очень многофункциональных пакета, каждый из которых очень хорошо поддерживает матрицы. Extreme Numerics отлично работает и имеет несколько очень хороших функций. Я также слышал очень хорошие отзывы о математических библиотеках IMSL Visual Numerics .
Раньше у меня был Mapack, и он оказался очень хорошим.
Хотя я не думаю, что в нем есть разреженные матрицы, но он поддерживает все основные функции линейной алгебры.
Другая альтернатива: IMSL для .NET . CenterSpace имеет библиотеки NMath - не использовал их.
Я использовал Mapack (порт .Net, а не версия COM) в проекте нейронной сети в университете. Я не могу точно вспомнить мельчайшие детали библиотеки, но она сделала все, что мне было нужно, и не было особенно обременительным в использовании.
Meta.Numerics (размещенный на codeplex ) - это бесплатный пакет, который будет вычислять собственные значения и собственные векторы несимметричных матриц, но в настоящее время не обрабатывает разреженные матрицы специально.
В ныне несуществующей управляемой библиотеке DirectX была некоторая поддержка матриц.
С тех пор она была перенесена в Microsoft XNA, которая, вероятно, вам не подходит, но статья Википедии о многомерных выражениях рекомендует что-то под названием SlimDX , которое может подойти .
Что касается .NET и Python, вы можете использовать IronPython. Однако вам также понадобится Ironclad , чтобы заставить SciPy и NumPy работать с IronPython.