|
|
|
@ -187,38 +187,155 @@ namespace Apewer |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 平均值
|
|
|
|
#region 求和
|
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static float Average(params float[] values) |
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static int Sum(params byte[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0F; |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var amount = 0F; |
|
|
|
foreach (var i in values) amount += i; |
|
|
|
return amount / values.Length; |
|
|
|
var result = 0; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static double Average(params double[] values) |
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static int Sum(params short[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0D; |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var amount = 0D; |
|
|
|
foreach (var i in values) amount += i; |
|
|
|
return amount / Convert.ToDouble(values.Length); |
|
|
|
var result = 0; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static decimal Average(params decimal[] values) |
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static int Sum(params int[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0M; |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var amount = 0M; |
|
|
|
foreach (var i in values) amount += i; |
|
|
|
return amount / Convert.ToDecimal(values.Length); |
|
|
|
var result = 0; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static long Sum(params long[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var result = 0L; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static int Sum(params sbyte[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var result = 0; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static int Sum(params ushort[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var result = 0; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static uint Sum(params uint[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var result = 0U; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static ulong Sum(params ulong[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var result = 0UL; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static float Sum(params float[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var result = 0F; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static double Sum(params double[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var result = 0D; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>求和。</summary>
|
|
|
|
public static decimal Sum(params decimal[] values) |
|
|
|
{ |
|
|
|
if (values == null) return 0; |
|
|
|
|
|
|
|
var result = 0M; |
|
|
|
foreach (var i in values) result += i; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 平均值
|
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static double Average(params byte[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length)); |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static double Average(params short[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length)); |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static double Average(params int[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length)); |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static double Average(params long[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length)); |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static double Average(params sbyte[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length)); |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static double Average(params ushort[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length)); |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static double Average(params uint[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length)); |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static double Average(params ulong[] values) => values.IsEmpty() ? 0 : (Sum(values) / Convert.ToDouble(values.Length)); |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static float Average(params float[] values) => values.IsEmpty() ? 0 : (Sum(values) / values.Length); |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static double Average(params double[] values) => values.IsEmpty() ? 0 : (Sum(values) / values.Length); |
|
|
|
|
|
|
|
/// <summary>平均值。</summary>
|
|
|
|
public static decimal Average(params decimal[] values) => values.IsEmpty() ? 0 : (Sum(values) / values.Length); |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 标准差
|
|
|
|
@ -432,7 +549,7 @@ namespace Apewer |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 最小值、最大值、极差
|
|
|
|
#region 最小值
|
|
|
|
|
|
|
|
private static T Most<T>(Func<T, T, bool> replace, T[] values) |
|
|
|
{ |
|
|
|
@ -463,12 +580,27 @@ namespace Apewer |
|
|
|
/// <summary>最小值。</summary>
|
|
|
|
public static byte Min(params byte[] values) => Most((a, b) => a > b, values); |
|
|
|
|
|
|
|
/// <summary>最小值。</summary>
|
|
|
|
public static short Min(params short[] values) => Most((a, b) => a > b, values); |
|
|
|
|
|
|
|
/// <summary>最小值。</summary>
|
|
|
|
public static int Min(params int[] values) => Most((a, b) => a > b, values); |
|
|
|
|
|
|
|
/// <summary>最小值。</summary>
|
|
|
|
public static long Min(params long[] values) => Most((a, b) => a > b, values); |
|
|
|
|
|
|
|
/// <summary>最小值。</summary>
|
|
|
|
public static sbyte Min(params sbyte[] values) => Most((a, b) => a > b, values); |
|
|
|
|
|
|
|
/// <summary>最小值。</summary>
|
|
|
|
public static ushort Min(params ushort[] values) => Most((a, b) => a > b, values); |
|
|
|
|
|
|
|
/// <summary>最小值。</summary>
|
|
|
|
public static uint Min(params uint[] values) => Most((a, b) => a > b, values); |
|
|
|
|
|
|
|
/// <summary>最小值。</summary>
|
|
|
|
public static ulong Min(params ulong[] values) => Most((a, b) => a > b, values); |
|
|
|
|
|
|
|
/// <summary>最小值。</summary>
|
|
|
|
public static float Min(params float[] values) => Most((a, b) => a > b, values); |
|
|
|
|
|
|
|
@ -478,15 +610,34 @@ namespace Apewer |
|
|
|
/// <summary>最小值。</summary>
|
|
|
|
public static decimal Min(params decimal[] values) => Most((a, b) => a > b, values); |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 最大值
|
|
|
|
|
|
|
|
/// <summary>最大值。</summary>
|
|
|
|
public static byte Max(params byte[] values) => Most((a, b) => a < b, values); |
|
|
|
|
|
|
|
/// <summary>最大值。</summary>
|
|
|
|
public static short Max(params short[] values) => Most((a, b) => a < b, values); |
|
|
|
|
|
|
|
/// <summary>最大值。</summary>
|
|
|
|
public static int Max(params int[] values) => Most((a, b) => a < b, values); |
|
|
|
|
|
|
|
/// <summary>最大值。</summary>
|
|
|
|
public static long Max(params long[] values) => Most((a, b) => a < b, values); |
|
|
|
|
|
|
|
/// <summary>最大值。</summary>
|
|
|
|
public static sbyte Max(params sbyte[] values) => Most((a, b) => a < b, values); |
|
|
|
|
|
|
|
/// <summary>最大值。</summary>
|
|
|
|
public static ushort Max(params ushort[] values) => Most((a, b) => a < b, values); |
|
|
|
|
|
|
|
/// <summary>最大值。</summary>
|
|
|
|
public static uint Max(params uint[] values) => Most((a, b) => a < b, values); |
|
|
|
|
|
|
|
/// <summary>最大值。</summary>
|
|
|
|
public static ulong Max(params ulong[] values) => Most((a, b) => a < b, values); |
|
|
|
|
|
|
|
/// <summary>最大值。</summary>
|
|
|
|
public static float Max(params float[] values) => Most((a, b) => a < b, values); |
|
|
|
|
|
|
|
@ -496,6 +647,10 @@ namespace Apewer |
|
|
|
/// <summary>最大值。</summary>
|
|
|
|
public static decimal Max(params decimal[] values) => Most((a, b) => a < b, values); |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 极差
|
|
|
|
|
|
|
|
/// <summary>极差。</summary>
|
|
|
|
public static int Range(params int[] values) => Max(values) - Min(values); |
|
|
|
|
|
|
|
@ -513,14 +668,10 @@ namespace Apewer |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 相关性
|
|
|
|
|
|
|
|
/// <summary>Pearson Correlation Coefficient 皮尔逊相关系数。计算两个数组的相似度。数组长度不相等时,以 0 填充不足的长度。</summary>
|
|
|
|
/// <remarks>
|
|
|
|
/// <para>0.8 ~ 1.0 : 极强相关</para>
|
|
|
|
/// <para>0.6 ~ 0.8 : 强相关</para>
|
|
|
|
/// <para>0.4 ~ 0.6 : 中等程度相关</para>
|
|
|
|
/// <para>0.2 ~ 0.4 : 弱相关</para>
|
|
|
|
/// <para>0.0 ~ 0.2 : 极弱相关或无相关</para>
|
|
|
|
/// </remarks>
|
|
|
|
/// <remarks>0.8 ~ 1.0 : 极强相关<br />0.6 ~ 0.8 : 强相关<br />0.4 ~ 0.6 : 中等程度相关<br />0.2 ~ 0.4 : 弱相关<br />0.0 ~ 0.2 : 极弱相关或无相关</remarks>
|
|
|
|
/// <exception cref="ArgumentException"></exception>
|
|
|
|
public static double Pearson(double[] bytes1, double[] bytes2) |
|
|
|
{ |
|
|
|
@ -554,6 +705,8 @@ namespace Apewer |
|
|
|
return r; |
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 从 String 转为数值。
|
|
|
|
|
|
|
|
// 修剪数值字符串。
|
|
|
|
|