我有一个 numpy 数组(实际上是从 GIS 栅格 map 导入的),其中包含 一个物种出现的概率值,如下例所示:
a = random.randint(1.0,20.0,1200).reshape(40,30)
b = (a*1.0)/sum(a)
现在我想再次获得该数组的离散版本。就像我有 例如位于该阵列区域的 100 个个体(1200 个单元)他们怎么样 分散式?当然应该按概率分配, 意味着较低的值表示较低的发生概率。然而,由于一切都是统计数据,仍然有可能以低概率找到一个人 细胞。应该可以多个个体占用一个cell...
就好像把一条连续的分布曲线又变成了直方图。就像许多不同的直方图可能导致特定的分布曲线一样,它也应该是相反的。因此,每次应用我正在寻找的算法都会产生不同的离散值。
...python 中是否有任何算法可以做到这一点?由于我不太熟悉离散化,也许有人可以提供帮助。
最佳答案
将 random.choice
与 bincount
一起使用:
np.bincount(np.random.choice(b.size, 100, p=b.flat),
minlength=b.size).reshape(b.shape)
如果您没有 NumPy 1.7,您可以将 random.choice
替换为:
np.searchsorted(np.cumsum(b), np.random.random(100))
给予:
np.bincount(np.searchsorted(np.cumsum(b), np.random.random(100)),
minlength=b.size).reshape(b.shape)
关于python - Python中概率数组的离散化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11650324/