You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用numpy数组作为numpy.random.multinomial的pvals时报错如何解决?

解决numpy.random.multinomial报错“Object too deep for desired array”的问题

错误原因

np.random.multinomial的pvals参数要求是一维数组(对应单组类别概率),但你传入的是形状为(100,3)的二维数组,包含100组独立的概率分布,不符合参数要求,因此触发报错。

解决方案

你需要让函数对每组概率分别生成样本,以下是三种可行方法:

方法一:列表推导式遍历生成

直接循环每组概率,逐个生成样本后拼接成数组:

prob_matrix = np.stack((p1, p2, p3), axis=1)
y = np.array([np.random.multinomial(1, p) for p in prob_matrix])

方法二:使用np.apply_along_axis批量处理

利用numpy的轴遍历函数,对概率矩阵的每一行(每组概率)生成样本:

prob_matrix = np.stack((p1, p2, p3), axis=1)
y = np.apply_along_axis(lambda p: np.random.multinomial(1, p), axis=1, arr=prob_matrix)

方法三:使用新版随机数生成器(推荐)

numpy的default_rng生成器支持直接传入二维概率矩阵,效率更高:

rng = np.random.default_rng()
prob_matrix = np.stack((p1, p2, p3), axis=1)
y = rng.multinomial(1, prob_matrix, size=prob_matrix.shape[0])

验证结果

生成的y会是形状为(100,3)的数组,每行是一个one-hot向量,对应从该行概率分布中抽样得到的类别(比如[1,0,0]表示选中第一类)。

内容的提问来源于stack exchange,提问作者Pandora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:05:47