是否有ac#库提供像numpy这样的数组操作

Jer*_*Kur 13 c# arrays numpy

我开始使用Numpy并且非常喜欢它的阵列处理功能.是否有一些我可以在C#中使用的库,它提供与数组类似的功能.我最想要的功能是:

  • 从另一个创建一个数组
  • n维数组的简易/三次迭代
  • 切片阵列

Ice*_*ind 8

NumPY已通过IronPython移植到.NET.看看这里的主页.

  • 此链接指向原始 PTVS 项目。PTVS 从未(真的)实现 numpy,现在已经过时了。在 .NET 上接近 numpy 的唯一项目是 [ILNumerics](https://ilnumerics.net) (2认同)

dri*_*iis 1

我认为你不需要图书馆。我认为 LINQ 很好地完成了您提到的所有操作。

从另一个数组创建一个数组

int[,] parts = new int[2,3];

int[] flatArray = parts.ToArray();
// Copying the array with the same dimensions can easily be put into an extension 
// method if you need it, nothing to grab a library for ...
Run Code Online (Sandbox Code Playgroud)

轻松迭代

int[,] parts = new int[2,3];

foreach(var item in parts)
    Console.WriteLine(item);
Run Code Online (Sandbox Code Playgroud)

数组切片

int[] arr = new int[] { 2,3,4,5,6 };
int[] slice = arr.Skip(2).Take(2).ToArray();

// Multidimensional slice 
int[,] parts = new int[2,3];
int[] slice = arr.Cast<int>().Skip(2).Take(2).ToArray();
Run Code Online (Sandbox Code Playgroud)

.Cast<int>最后一个例子中的尴尬是由于 C# 中的多维数组是 onlyIEnumerable而不是 的IEnumerable<T>怪癖。

  • LINQ 缺乏数字功能,仅适用于一维,并且它会比良好的数字库慢得多。 (23认同)
  • 数组切片指向原始数组。您正在生成切片的副本。 (4认同)