我正在编写一个程序,该程序遍历整数数组并计算标准差以识别数据中的异常值。从这里,我想创建一个新数组,并删除已识别的异常值,以便重新计算平均值和标准差。有什么办法可以做到这一点吗?
最佳答案
这个问题有一个非常简单的解决方案,涉及在 if
语句中转换你的思维方式(它似乎实际上并不在 for 循环中......可能想要解决这个问题)。
float dataMinusOutliers[n];
int indexTracker = 0;
for (i=0; i<n; i++) {
if (data[i] >= (-2*stdevfinal) && data[i] <= (2*stdevfinal)) {
dataMinusOutliers[indexTracker] = data[i];
indexTracker += 1;
}
}
请注意,这并不是特别可扩展,并且 dataMinusOutliers
数组可能会有相当多未使用的索引。您始终可以使用 indexTracker - 1
来记录数组的实际大小,并创建另一个数组,将 dataMinusOutliers
中的重要值复制到其中。是否有更优雅的解决方案?是的。考虑到您的要求,这是否有效?是的。
关于c - 如何使用 C 中的条件测试从数组中删除某些元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40475679/