Как получить срезы многомерного массива в стиле C#, numpy? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть

int[,,,] arr = new int[5, 6, 7, 8]; // c#
arr = np.zeros((5, 6, 7, 8)) # Python

4d-массив с 5 * 6 * 7 * 8 ячейками.

Я хочу разрезать его на c#, как в numpy

var mySlice = arr[2:4, 0, :2, :]; // Won't work in C#, but looking for a way to do this. return type should be int[,,] A 3d array with 2 * 1 * 2 * 8 cells.
my_slice = arr[2:4, 0, :2, :];  # easy with numpy

Если это можно сделать динамически, это тоже нормально.

Как разрезать многомерные массивы в C#?

1 Ответ

0 голосов
/ 09 июля 2020

Насколько я знаю, в c# это невозможно сделать. Помимо написания собственного класса многомерного массива.

C# 8 вводит диапазоны и нарезку массива. Но здесь используется Span<T> для возврата фрагмента без необходимости копировать какие-либо значения. Многомерные массивы хранятся в непрерывной памяти, поэтому потенциальный оператор многомерного среза должен иметь одно смещение и длину на измерение.

...