创建matplotlib子图并调用np.random.multivariate_normal

问题描述

我在Jupyter笔记本中的以下代码有问题:

import numpy as np
import matplotlib.pyplot as plt
from scipy import linalg as lg

运行此单元格后

fig,axes = plt.subplots(nrows=2,ncols=1,figsize=(15,15))

# joint covariance matrix
R = np.array([[1.,0.,0.95,0.  ],[0.,1.,0.75,0.5,0.9,0.8,0.2,0.3,0.1,0.7 ],[0.95,0.7,1.  ]])

# joint zero-mean
mu = np.zeros(R.shape[0])
N=1000

np.random.multivariate_normal(mu,R,N)

我得到了错误

raise LinAlgError("SVD did not converge") LinAlgError: SVD did not converge

错误消失的时间

  • 删除了“图,轴”行。

我不明白matplotlib与numpy有什么关系。...

解决方法

检查代码后,我发现了另一种摆脱错误的方法:

  • 我删除了linalg导入(我需要在MWE中未放入的其他代码),然后重新启动内核。

首先找到错误可修复的原因,然后解决它花费了我一些时间,所以我想在此处提供解决方案

更新所有软件包(我使用的是Anaconda),然后最终用pip卸载它们并使用Anaconda安装,然后重新启动笔记本电脑。然后,我可以将导入和代码完全保持如上所述,并且再也没有出现任何错误。