我有一个非常大的二维数组,需要在这个数组上进行向量操作。NTerms和NDocs都是非常大的整数。
var myMat = new double[NTerms, NDocs];
我需要从这个矩阵中提取向量列。目前,我正在使用for循环。
col = 100;
for (int i = 0; i < NTerms; i++)
{
myVec[i] = myMat[i, col];
}
这个操作非常缓慢。在Matlab中,我可以不需要迭代就提取向量,如下所示:
myVec = myMat[:,col];
有没有在C#中实现这个的方法?
myMat
?这样,你提取的是行而不是列,这更加缓存一致并且应该更快(虽然我不知道速度会快多少)。另一个选项是使用Marshal.Copy
复制内存。此外,你可以尝试使用Parallel.For
并行化。 - Nico Schertler