使用scipy.stats.multivariate_normal.pdf时出错:操作数不能与形状(1,8)(21,)一起广播

2024-05-16 01:51:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为python上的数据集计算多元高斯密度函数。我的数据集有21个变量和75个数据点。

我已经计算了协方差矩阵(cov),它是一个21*21的数组,平均数组m是一个形状(21,)。我需要使用这个scipy函数的另一个输入是“分位数(类似数组),x的最后一个轴表示组件”。

我真的不明白量子位指的是什么。

我把函数的分位数输入写成了quantiles=np.array([0.0,0.01,0.05,0.1,1-0.10,1-0.05,1-0.01,1.0]),但是当我计算scipy.stats.multivariate_normal.pdf(分位数,m,cov)时,还是会出错

错误为:valueError:操作数不能与形状(1,8)(21,)一起广播

有人能帮忙吗??


Tags: 数据函数np量子组件矩阵scipy数组
1条回答
网友
1楼 · 发布于 2024-05-16 01:51:45

我认为文档需要一个x,它的最后一个轴中包含实际的随机向量,这是一种相当不可理解的方式。以下代码有效:

import numpy as np
from scipy.stats import multivariate_normal


mean = np.array([0.5, 0.1, 0.3])
cov = np.array([[0.1, 0.0, 0.0], [0.0, 1.5, 0.0], [0.0, 0.0, 0.9]])
x = np.random.uniform(size=(100, 3))
y = multivariate_normal.pdf(x, mean=mean, cov=cov)
print(y)

因此,构建数据矩阵x,以便在第一维(每行)中包含数据向量。第二个维度(列)将构成21个单独的变量。所以基本上,您需要将数据插入到一个(75,21)大小的矩阵中。注意平均向量和协方差矩阵项对应于正确的变量。

相关问题 更多 >