c++从双精度数组中减去平均值
C++ subtract mean from array of double
我有一个大约有10,000个元素的double*数组,并且必须从中减去平均值。这是必须经常做的。
现在我已经做了,别傻了:
double mt = 0;
for (int i=0; i<n; i++) {mt += array[i];}
mt /= n;
for (int i=0; i<n; i++) {array[i] -= mt;}
where array:双精度&n是数组的大小。我相信有一些方法来实现它与一些花哨的字符会快得多,我希望你们的家伙可以帮助我与此。
干杯magu
这可以用更短的方式完成,但性能不会明显更好。使用std::accumulate
from <algorithm>
:
double mean = std::accumulate(array, array + n)/double(n);
你可以做的是记住你第一次计算它,然后在下一次迭代中简单地从总和中减去(mt * n)
(假设你在问题中显示的是迭代之间发生的修改)。
我觉得你的解决方案不错。
你可以使用std::transform
,但我确信它不会使它更可读。
如果你必须经常这样做,那么为什么不保持一个总数和数组中的项目数呢?
则计算平均值的和的复杂度为O(1)。
您可以通过保留total_value的活动副本来跳过每次平均值的计算。如果你必须递归地从同一表格本身减去平均值,那么你可以使用以下公式并找到总数。
new_total = old_total - n * prev_mean;New_mean = new_total/n;
似乎没有什么实现在低水平。
谢谢你的回答。
相关文章:
- 按平均值替换数组中的元素
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 浮点格式数组的平均值
- 使用动态数组求和和和求平均值
- 玩数字编程挑战(子数组的平均值)
- 查找数组最后 3 个数字的平均值
- C++数组的最大值、最小值、平均值函数
- 五个中三个最大参数的平均值,不使用排序算法或向量/数组
- 我需要以尺寸方式计算数组的平均值
- 计算数组中特定线的平均值并存储在另一个数组中
- 尝试在数组(C )中找到平均值时,获取-NAN(IND)输出
- 从数组中获取值并计算平均值,然后存储在数组中
- 如何在数组中的范围内添加所有数字?然后找到该范围的平均值
- C++数组,平均值(初学者)
- 数组元素的奇怪平均值
- c++中const数组的平均值模板
- C++计算2D数组中可变宽度数字的平均值
- 使用函数来查找数组C++的平均值
- 函数在数组中求平均值