Многомерный IEnumerable в многомерный массив float[,,]
Как пересобрать такой многомерный IEnumerable
в многомерный массив float[1,37,12]
?
Что является переключателем для for
?
ToArray()
только в одномерный переносит.
Как пересобрать такой многомерный IEnumerable
в многомерный массив float[1,37,12]
?
Что является переключателем для for
?
ToArray()
только в одномерный переносит.
IEnumerable
это перечислимое, оно не может быть скольки-то мерным, вы что-то перепутали. В реальности output не IEnumerable
, у него реальный тип есть. Покажите код. И зачем вам вообще в массив это копировать? Здесь же простым подсчетом индексов можно напрямую к данным обращаться через .Buffer
. Есть еще .Strides
, но вы не показали, что там.
Окей, давайте в лоб.
Вот вы сделали
float[] array = <...>.ToArray();
Теперь создайте 3D массив
float[,,] array3D = new float[1, 37, 12];
И скопируйте данные
Buffer.BlockCopy(array, 0, array3D, 0, 1 * 37 * 12 * sizeof(float));
Готово.
Это просто, но есть недостаток данного подхода, все данные вы копируете дважды - сначала в одномерный массив, затем в трехмерный. С большой вероятностью в этом нет необходимости, но так как вы не дали никакой информации, зачем это и откуда взялось - других решений здесь найти невозможно. Гадание по скриншотам - так себе занятие.