2013-04-12 30 views
7

Tôi bắt đầu sử dụng các khả năng xử lý mảng Numpy và thực sự thích nó. Có một số thư viện mà tôi có thể sử dụng trong C# cung cấp khả năng tương tự với mảng. Các tính năng mà tôi muốn nhất là:Có thư viện C# cung cấp thao tác mảng như numpy

  • Tạo một mảng từ một
  • dễ dàng/lặp trival của mảng n chiều
  • Cắt lát của mảng

Trả lời

0

Tôi không nghĩ rằng bạn cần Thư viện. Tôi nghĩ LINQ làm tất cả các bạn đề cập khá tốt.

Tạo một mảng từ một

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 ... 

Dễ dàng lặp

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

foreach(var item in parts) 
    Console.WriteLine(item); 

Cắt lát của mảng

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(); 

Các vụng .Cast<int> trong ví dụ cuối cùng là due to the quirk that multidimensional arrays in C# are only IEnumerable and not IEnumerable<T>.

+9

LINQ thiếu các tính năng số, chỉ hoạt động tốt với 1 tham số và nó sẽ chậm hơn đáng kể so với số lượng tốt. – CodesInChaos

+0

Vâng, câu hỏi là về thao tác mảng, nó không nói liệu hiệu suất hay tính toán số là một yếu tố. – driis

+0

Ít nhất là "mảng cắt" và "kích thước n" đã được đề cập và thiếu LINQ. – CodesInChaos

6

NumPY đã được chuyển đến .NET qua IronPython. Hãy xem here cho trang chủ.

Các vấn đề liên quan