python - 一维数组的数密度分布 - 2 次不同的尝试

标签 python arrays distribution derivative

我在模拟体积中有大量元素,我称之为 RelDist(其中维度是距离单位)。我试图确定“每单位体积的值数”的分布,这也是数密度。它应该类似于此图:

我知道轴是以 10 为底的对数缩放的,场景的情节肯定会下降。 enter image description here

在数学上,我将其设置为两个等价方程:

enter image description here

其中 N 是数组中根据距离的自然对数区分的元素数。也可以通过引入另一个r因子等价地改写成正则导数的形式。

等价地,

enter image description here

因此,对于不断增加的 r,我想计算每个 r 的对数 bin 中元素 N 的变化。

截至目前,我在设置直方图中的频率计数时遇到了问题,同时在它旁边容纳了音量。


尝试 1

这是使用 dN/dlnr/体积方程

def n(dist, numbins):

    logdist= np.log(dist)
    hist, r_array = np.histogram(logdist, numbins)
    dlogR = r_array[1]-r_array[0]

    x_array = r_array[1:] - dlogR/2

    ## I am condifent the above part of this code is correct.
    ## The succeeding portion does not work.

    dR = r_array[1:] - r_array[0:numbins] 
    dN_dlogR = hist * x_array/dR

    volume = 4*np.pi*dist*dist*dist

    ## The included volume is incorrect

    return [x_array, dN_dlogR/volume]

绘制此图甚至无法像我在上面发布的第一个图那样正确显示分布,并且仅当我选择 bin 编号与我的输入数组形状相同时它才有效。包子的数量应该是任意的,不是吗?


尝试 2

这是使用等效的 dN/dr/volume 方程。

numbins = np.linspace(min(RelDist),max(RelDist), 100)
hist, r_array = np.histogram(RelDist, numbins)

volume = 4*np.float(1000**2)

dR = r_array[1]-r_array[0]
x_array = r_array[1:] - dR/2


y = hist/dR

稍微容易一些,但不包括体积项,我得到一种直方图分布,这至少是一个开始。

通过这种尝试,如何将体积项包含在数组中?

示例

从大约 10 的距离 R 值开始,计算相对于 R 的数字变化,然后增加到距离值 R 20,计算变化,增加到值 30,计算变化,依此类推等等。


如果您有兴趣重新创建它,这是我的阵列的 txt 文件

https://www.dropbox.com/s/g40gp88k2p6pp6y/RelDist.txt?dl=0

最佳答案

由于没有人能够帮助回答,我将提供我的结果,以备日后有人需要时使用:

def n_ln(dist, numbins):
    log_dist = np.log10(dist)
    bins = np.linspace(min(log_dist),max(log_dist), numbins)
    hist, r_array = np.histogram(log_dist, bins)

    dR = r_array[1]-r_array[0]    
    x_array = r_array[1:] - dR/2
    volume =  [4.*np.pi*i**3. for i in 10**x_array[:] ]

    return [10**x_array, hist/dR/volume]

关于python - 一维数组的数密度分布 - 2 次不同的尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44561945/

相关文章:

c - 在函数声明中引用结构类型?

Java 将对象转换为 Object[] 数组并丰富 For 循环

python - 在Python中根据前一个函数的参数调用函数

javascript - 从 JavaScript 控制台日志中删除引号

r - {ggdist }'s stat_interval levels calculate (I thought it was confidence intervals but they' re 不正确)是什么?

Java:生成具有对数分布的随机数

r - "runif"函数如何在 R 内部工作?

python - 使用 Python 获取特定的父文件夹

python - Django:无法验证 UserCreationForm

python - webhelpers 有一些严重错误