private NDArray setValue <T>(NDArray indexes) { Shape newShape = new int[] { indexes.size }.Concat(shape.Skip(1)).ToArray(); var buf = Data <T>(); var idx = indexes.Data <int>(); var array = new T[newShape.Size]; var indice = Shape.GetShape(newShape.Dimensions, axis: 0); var length = Shape.GetSize(indice); for (var row = 0; row < newShape[0]; row++) { var d = buf.AsSpan(idx[row] * length, length); d.CopyTo(array.AsSpan(row * length)); } var nd = new NDArray(array, newShape); return(nd); }