/// <summary> /// Returns a vector averaged from the data vectors /// </summary> /// <param name="indices">Indices of the data vectors to use in the averaged vector</param> public IVector GetAverageFromData(IReadOnlyList <int> indices) { using (var data = _lap.CreateMatrixFromColumns(indices.Select(i => _data[i]).ToList())) { var result = data.RowSums(); result.Multiply(1f / indices.Count); return(result); } }
public void TestMatrixCreationFromColumns() { var values = new[] { Enumerable.Range(0, 10).Select(v => (float)v).ToArray(), Enumerable.Range(0, 10).Select(v => (float)v * 2).ToArray(), Enumerable.Range(0, 10).Select(v => (float)v * 3).ToArray(), }; var cpuRowList = values.Select(v => _cpu.CreateVector(v)).ToList(); var cpuMatrix = _cpu.CreateMatrixFromColumns(cpuRowList); var gpuRowList = values.Select(v => _cuda.CreateVector(v)).ToList(); using (var gpuMatrix = _cuda.CreateMatrixFromColumns(gpuRowList)) { FloatingPointHelper.AssertEqual(cpuMatrix.AsIndexable(), gpuMatrix.AsIndexable()); } gpuRowList.ForEach(v => v.Dispose()); }