public void Setup() { var arraySize = 100000; A1 = ArraySlice.FromArray(new double[arraySize].Select((x, idx) => x + idx).ToArray()); ACopy1 = ArraySlice.FromArray(new double[arraySize].Select((x, idx) => x + idx).ToArray()); ASlice1 = ArraySlice.FromArray(new double[arraySize - 2].Select((x, idx) => x + idx).ToArray()); ASliceStep2 = ArraySlice.FromArray(new double[((arraySize - 2) + 1) / 2].Select((x, idx) => x + idx).ToArray()); M1 = new Memory <double>(A1.ToArray()); M2 = new Memory <double>(A1.ToArray(), 2, A1.Count - 2); ND1 = new NDArray(new double[arraySize].Select((x, idx) => x + idx).ToArray()); NDSlice1 = ND1["1:" + (ND1.size - 2)]; NDSliceStep2 = ND1["1:" + (ND1.size - 2) + ":2"]; NDDouble1 = new NDArray(new double[arraySize].Select((x, idx) => x + idx).ToArray()).MakeGeneric <double>(); NDDoubleSlice1 = NDDouble1["1:" + (NDDouble1.size - 2)]; NDDoubleSliceStep2 = NDDouble1["1:" + (NDDouble1.size - 2) + ":2"]; }
public void Array1ToArray() { var A = A1.ToArray(); A[0] = 1.1; }
public Array ToJaggedArray <T>() where T : unmanaged { ArraySlice <T> data = Storage.GetData <T>(); var shape = Shape; switch (ndim) { case 1: { return(data.ToArray()); } case 2: { T[][] ret = new T[shape[0]][]; for (int i = 0; i < ret.Length; i++) { ret[i] = new T[shape[1]]; } for (int i = 0; i < ret.Length; i++) { for (int j = 0; j < ret[0].Length; j++) { ret[i][j] = GetAtIndex <T>(shape.GetOffset(i, j)); } } return(ret); break; } case 3: { T[][][] ret = new T[shape[0]][][]; for (int i = 0; i < ret.Length; i++) { ret[i] = new T[shape[1]][]; for (int j = 0; j < ret[i].Length; j++) { ret[i][j] = new T[shape[2]]; } } for (int i = 0; i < shape[0]; i++) { for (int j = 0; j < shape[1]; j++) { for (int k = 0; k < shape[2]; k++) { ret[i][j][k] = (T)GetValue(i, j, k); } } } return(ret); } case 4: { T[][][][] ret = new T[shape[0]][][][]; for (int i = 0; i < ret.Length; i++) { ret[i] = new T[shape[1]][][]; for (int j = 0; j < ret[i].Length; j++) { ret[i][j] = new T[shape[2]][]; for (int n = 0; n < ret[i].Length; n++) { ret[i][j][n] = new T[shape[3]]; } } } for (int i = 0; i < shape[0]; i++) { for (int j = 0; j < shape[1]; j++) { for (int k = 0; k < shape[2]; k++) { for (int l = 0; l < shape[3]; l++) { ret[i][j][k][l] = (T)GetValue(i, j, k, l); } } } } return(ret); } case 5: { T[][][][][] ret = new T[shape[0]][][][][]; for (int i = 0; i < ret.Length; i++) { ret[i] = new T[shape[1]][][][]; for (int j = 0; j < ret[i].Length; j++) { ret[i][j] = new T[shape[2]][][]; for (int n = 0; n < ret[i].Length; n++) { ret[i][j][n] = new T[shape[3]][]; for (int k = 0; k < ret[i].Length; k++) { ret[i][j][n][k] = new T[shape[4]]; } } } } for (int i = 0; i < shape[0]; i++) { for (int j = 0; j < shape[1]; j++) { for (int k = 0; k < shape[2]; k++) { for (int l = 0; l < shape[3]; l++) { for (int m = 0; m < shape[4]; m++) { ret[i][j][k][l][m] = (T)GetValue(i, j, k, l, m); } } } } } return(ret); } case 6: { T[][][] ret = new T[shape[0]][][]; for (int i = 0; i < ret.Length; i++) { ret[i] = new T[shape[1]][]; for (int jdx = 0; jdx < ret[i].Length; jdx++) { ret[i][jdx] = new T[shape[2]]; } } for (int i = 0; i < shape[0]; i++) { for (int j = 0; j < shape[1]; j++) { for (int k = 0; k < shape[2]; k++) { for (int l = 0; l < shape[3]; l++) { for (int m = 0; m < shape[4]; m++) { for (int n = 0; n < shape[5]; n++) { ret[i][j][k] = (T)GetValue(i, j, k); } } } } } } return(ret); } default: throw new NotSupportedException(); } }