julia-lang 中的直方图计算
Histogram calculation in julia-lang
参考 julia-lang 文档:
hist(v[, n]) → e, counts
计算 v 的直方图,可选择使用大约 n 个 bin。 return 值是一个范围 e,它对应于 bin 的边缘,以及包含每个 bin 中 v 的元素数量的计数。注意:Julia 不会在计算中忽略 NaN 值。
我选择一个数据样本范围
testdata=0:1:10;
然后使用 hist 函数计算 1 到 5 个 bin 的直方图
hist(testdata,1) # => (-10.0:10.0:10.0,[1,10])
hist(testdata,2) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,3) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,4) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,5) # => (-2.0:2.0:10.0,[1,2,2,2,2,2])
如您所见,当我想要 1 个箱子时它计算出 2 个箱子,而当我想要 2 个箱子时它计算出 3 个。
为什么会这样?
文档中的关键词是近似。您可以在 Julia 的 base
模块 here.
中检查 hist
实际为您自己做了什么
当您执行 hist(test,3)
时,您实际上是在调用
hist(v::AbstractVector, n::Integer) = hist(v,histrange(v,n))
也就是说,在第一步中,n
参数被 histrange
函数转换为 FloatRange
,其代码可以在 here 中找到。如您所见,这些步骤的计算并不完全简单,因此您应该稍微尝试一下此函数以弄清楚它是如何构建构成直方图基础的范围的。
作为编写底层函数的人:目的是根据以 10 为基数的计数系统(即 10k, 2×10k, 5×10k)。如果您想要更多控制,您还可以指定确切的 bin 边缘。
参考 julia-lang 文档:
hist(v[, n]) → e, counts
计算 v 的直方图,可选择使用大约 n 个 bin。 return 值是一个范围 e,它对应于 bin 的边缘,以及包含每个 bin 中 v 的元素数量的计数。注意:Julia 不会在计算中忽略 NaN 值。
我选择一个数据样本范围
testdata=0:1:10;
然后使用 hist 函数计算 1 到 5 个 bin 的直方图
hist(testdata,1) # => (-10.0:10.0:10.0,[1,10])
hist(testdata,2) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,3) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,4) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,5) # => (-2.0:2.0:10.0,[1,2,2,2,2,2])
如您所见,当我想要 1 个箱子时它计算出 2 个箱子,而当我想要 2 个箱子时它计算出 3 个。
为什么会这样?
文档中的关键词是近似。您可以在 Julia 的 base
模块 here.
hist
实际为您自己做了什么
当您执行 hist(test,3)
时,您实际上是在调用
hist(v::AbstractVector, n::Integer) = hist(v,histrange(v,n))
也就是说,在第一步中,n
参数被 histrange
函数转换为 FloatRange
,其代码可以在 here 中找到。如您所见,这些步骤的计算并不完全简单,因此您应该稍微尝试一下此函数以弄清楚它是如何构建构成直方图基础的范围的。
作为编写底层函数的人:目的是根据以 10 为基数的计数系统(即 10k, 2×10k, 5×10k)。如果您想要更多控制,您还可以指定确切的 bin 边缘。