NumPy - самый простой и мощный пакет для работы с данными на Python. Если вы собираетесь работать над проектами анализа данных или машинного обучения, твердое понимание numpy практически обязательно. Другие пакеты для анализа данных (например, pandas) построены на основе numpy, а пакет scikit-learn, который используется для создания приложений машинного обучения, также хорошо работает с numpy. Но для разработчиков .NET такой библиотеки инструментов не существует. Хотя существуют библиотеки с открытым исходным кодом, такие как Deedle и Math.NET, они не очень просты в использовании и не могут заимствовать большой объем существующего кода Python.

Num Sharp (Numerical .NET) - библиотека линейной алгебры на C #. Он написан на C # и совместим со стандартной библиотекой .net 2.0. Его цель - позволить разработчикам .NET писать код машинного обучения с использованием синтаксиса NumPy, минимизируя затраты на перенос кода Python. NumSharp использует новейшую технологию Span для прямого безопасного доступа к памяти, оптимизируя производительность для каждого API моделирования. NumSharp очень полезен для выполнения математических и логических операций с массивами. Он предоставляет множество полезных функций для операций с n-массивами и матрицами в .NET.

Приведем фрагмент кода, чтобы проиллюстрировать, как используется NumSharp.

// init a np instance
var np = new NumPy<int>();
// generate a vector with number 0-9
np.arange(10)
// generate a 3-dimension tensor
np.arange(12).reshape(2, 3, 2);
// generate 10 random number and convert to 5 * 5 matrix.
np.random.randint(low: 0, high: 10, size: new Shape(5, 5));

Очень ли близок приведенный выше код к коду Python? Прямо как близнецы. Цель NumSharp - упростить копирование и вставку кода Python в C #.

Как установить:

PM> Install-Package NumSharp

Если вы считаете, что эта библиотека полезна для вас, пожалуйста, активно участвуйте в обсуждении. Добро пожаловать, чтобы пометить меня здесь на Github, есть также образец кода, который представляет собой реализацию Искусственной нейронной сети в NumSharp с нуля.

Без NumSharp я думаю о Python только для написания проекта машинного обучения, но пока я знаком с C #. С этого момента это хороший момент для начала нового проекта машинного обучения с использованием C # dotnet. Всем спасибо!