为什么使用matplotlib打印某些内容会改变具有复杂条目的numpy.linalg.inv反转的第一个结果,以及如何避免这种情况?
我正在为我的一个项目编写代码,第一次运行代码时发现代码中出现了一些奇怪的为什么使用matplotlib打印某些内容会改变具有复杂条目的numpy.linalg.inv反转的第一个结果,以及如何避免这种情况?,numpy,matplotlib,matrix-inverse,inversion,Numpy,Matplotlib,Matrix Inverse,Inversion,我正在为我的一个项目编写代码,第一次运行代码时发现代码中出现了一些奇怪的nan值,第二次运行同一行代码时这些值消失了。寻找原因花了我几个小时,我将其归结为以下难以置信的情况: 绘制一些matplotlib图形后,第一次通过numpy.linalg.inv运行矩阵求逆(使用复杂条目)时,会更改矩阵求逆的结果(并显示一些nan值)。当再次计算相同的反演(或具有复数值的不同反演)时,可以恢复正确的矩阵反演结果(无nans) 这些简单的代码行应该足以重现问题: import numpy as np im
nan
值,第二次运行同一行代码时这些值消失了。寻找原因花了我几个小时,我将其归结为以下难以置信的情况:
绘制一些matplotlib图形后,第一次通过numpy.linalg.inv
运行矩阵求逆(使用复杂条目)时,会更改矩阵求逆的结果(并显示一些nan
值)。当再次计算相同的反演(或具有复数值的不同反演)时,可以恢复正确的矩阵反演结果(无nan
s)
这些简单的代码行应该足以重现问题:
import numpy as np
import matplotlib.pyplot as plt
print(np.linalg.inv([[1+0j,0],[0,1]]))
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
plt.show()
print(np.linalg.inv([[1+0j,0],[0,1]]))
print(np.linalg.inv([[1+0j,0],[0,1]]))
我得到以下结果:
[[1.+0.j 0.+0.j]
[0.+0.j 1.+0.j]]
**<here sits the canavas of the empty plot>**
[[nan+nanj 0. +0.j]
[nan +0.j 1. +0.j]]
[[1.+0.j 0.+0.j]
[0.+0.j 1.+0.j]]
有关更多信息,请参阅MKL numpy正在使用的文件(由np.show\u config()
生成)
什么软件包版本?什么蟒蛇?什么系统?我无法在Win10中使用ipython 7.16.1、python 3.8.3、numpy 1.18.5、matplotlib 3.2.2在普通python中复制相同的交易,没有ipython。感谢您的快速回复,我添加了我安装的所有python包。我也会在没有jupyther笔记本的情况下尝试它。对于我来说,它也会发生在一个简单的ipython环境中
# Name Version Build Channel
backcall 0.2.0 py_0
blas 1.0 mkl
ca-certificates 2020.12.8 haa95532_0
certifi 2020.12.5 py39haa95532_0
colorama 0.4.4 pyhd3eb1b0_0
cycler 0.10.0 py39haa95532_0
decorator 4.4.2 py_0
freetype 2.10.4 hd328e21_0
icu 58.2 ha925a31_3
intel-openmp 2020.2 254
ipython 7.19.0 py39haa95532_0
ipython_genutils 0.2.0 pyhd3eb1b0_1
jedi 0.17.2 py39haa95532_1
jpeg 9b hb83a4c4_2
kiwisolver 1.3.0 py39h604cdb4_0
libpng 1.6.37 h2a8f88b_0
libtiff 4.1.0 h56a325e_1
lz4-c 1.9.2 hf4a77e7_3
matplotlib 3.3.2 haa95532_0
matplotlib-base 3.3.2 py39h35d3fe4_0
mkl 2020.2 256
mkl-service 2.3.0 py39h196d8e1_0
mkl_fft 1.0.6 py39h054117c_0
mkl_random 1.0.2 py39h848d8c7_0
numpy 1.19.2 py39h729668d_0
numpy-base 1.19.2 py39hbd0edd7_0
olefile 0.46 py_0
openssl 1.1.1i h2bbff1b_0
parso 0.7.0 py_0
pickleshare 0.7.5 pyhd3eb1b0_1003
pillow 8.0.1 py39h4fa10fc_0
pip 20.3.3 py39haa95532_0
prompt-toolkit 3.0.8 py_0
pygments 2.7.3 pyhd3eb1b0_0
pyparsing 2.4.7 py_0
pyqt 5.9.2 py39hd77b12b_6
python 3.9.1 h6244533_2
python-dateutil 2.8.1 py_0
qt 5.9.7 vc14h73c81de_0
setuptools 51.0.0 py39haa95532_2
sip 4.19.13 py39hd77b12b_0
six 1.15.0 py39haa95532_0
sqlite 3.33.0 h2a8f88b_0
tk 8.6.10 he774522_0
tornado 6.1 py39h2bbff1b_0
traitlets 5.0.5 py_0
tzdata 2020d h14c3975_0
vc 14.2 h21ff451_1
vs2015_runtime 14.27.29016 h5e58377_2
wcwidth 0.2.5 py_0
wheel 0.36.2 pyhd3eb1b0_0
wincertstore 0.2 py39h2bbff1b_0
xz 5.2.5 h62dcd97_0
zlib 1.2.11 h62dcd97_4
zstd 1.4.5 h04227a9_0
blas_mkl_info:
libraries = ['mkl_rt']
library_dirs = ['C:/Users/Frederic/anaconda3\\Library\\lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['C:/Users/Frederic/anaconda3\\Library\\include']
blas_opt_info:
libraries = ['mkl_rt']
library_dirs = ['C:/Users/Frederic/anaconda3\\Library\\lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['C:/Users/Frederic/anaconda3\\Library\\include']
lapack_mkl_info:
libraries = ['mkl_rt']
library_dirs = ['C:/Users/Frederic/anaconda3\\Library\\lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['C:/Users/Frederic/anaconda3\\Library\\include']
lapack_opt_info:
libraries = ['mkl_rt']
library_dirs = ['C:/Users/Frederic/anaconda3\\Library\\lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['C:/Users/Frederic/anaconda3\\Library\\include']