首页 > 解决方案 > numpy:在“锯齿状”数组中矢量化随机数生成

问题描述

我有两个锯齿状数组作为输入:第一个是值数组的数组,第二个是与前一个数组的值相对应的概率数组的数组。对于每一行值,我想根据相应的概率数组绘制一个值。

以下是非矢量化版本的示例代码:

values = [[1, 2, 4], [19, 8], [7, 6, 1, 2], [5, 0]]
probabilities = [[0.1, 0.1, 0.8], [0.5, 0.5], [1, 0, 0, 0], [0.25, 0.75]]

output = [np.random.choice(values, p=probs) for values, probs in zip(values, probabilities)]
print(output)

输出:

[4, 19, 7, 0]

我尝试对每对值和概率使用 np.vectorize ,但它没有提供加速。有没有办法通过使用 np.vectorize 来矢量化这种类型的随机选择?

标签: pythonarraysnumpy

解决方案


推荐阅读