Python 3.x ValueError原因:不允许负维度?
我一直在尝试绘制下面定义的函数的输出,但无法获得输出。我尝试了几种方法,但每次都会出现不同的错误。如果有人能帮助我做错事,我将不胜感激Python 3.x ValueError原因:不允许负维度?,python-3.x,matplotlib,Python 3.x,Matplotlib,我一直在尝试绘制下面定义的函数的输出,但无法获得输出。我尝试了几种方法,但每次都会出现不同的错误。如果有人能帮助我做错事,我将不胜感激 import matplotlib.pyplot as plt %matplotlib inline import math import sympy as sym x = sym.symbols('x',positive = True) lambd = 4 a= 3 def f(x): return lambd**a * x**(a-1) * sym.
import matplotlib.pyplot as plt
%matplotlib inline
import math
import sympy as sym
x = sym.symbols('x',positive = True)
lambd = 4
a= 3
def f(x):
return lambd**a * x**(a-1) * sym.exp(-lambd*x) / math.factorial(a-1)
x1 = np.linspace(0,1,10)
plt.plot(x1,f(x1))
如果我将x1
更改为np.linspace(0,1100)
,则错误为“ValueError:序列太大;不能大于32”
原因是什么?在此方面的一些指导将受到高度赞赏 您正在将numpy数组
x1
传递给函数f
。问题是,在这个函数中有symphy.exp()
,它不知道如何处理数组,因为它只处理符号和数字
最简单的方法是使用numpy.exp
import matplotlib.pyplot as plt
import numpy as np
import math
lambd = 4
a= 3
def f(x):
return lambd**a * x**(a-1) * np.exp(-lambd*x) / math.factorial(a-1)
x1 = np.linspace(0,1,10)
plt.plot(x1,f(x1))
plt.show()
如果出于任何原因,您需要使用仅对单个数字有效而不对数组有效的函数,则可以使用numpy.vectorize
将函数转换为按元素计算输入数组的函数
import matplotlib.pyplot as plt
import sympy as sym
import numpy as np
import math
lambd = 4
a= 3
def f(x):
return lambd**a * x**(a-1) * sym.exp(-lambd*x) / math.factorial(a-1)
fv = np.vectorize(f)
x1 = np.linspace(0,1,10)
plt.plot(x1,fv(x1))
plt.show()
您正在将numpy数组
x1
传递给函数f
。问题是,在这个函数中有symphy.exp()
,它不知道如何处理数组,因为它只处理符号和数字
最简单的方法是使用numpy.exp
import matplotlib.pyplot as plt
import numpy as np
import math
lambd = 4
a= 3
def f(x):
return lambd**a * x**(a-1) * np.exp(-lambd*x) / math.factorial(a-1)
x1 = np.linspace(0,1,10)
plt.plot(x1,f(x1))
plt.show()
如果出于任何原因,您需要使用仅对单个数字有效而不对数组有效的函数,则可以使用numpy.vectorize
将函数转换为按元素计算输入数组的函数
import matplotlib.pyplot as plt
import sympy as sym
import numpy as np
import math
lambd = 4
a= 3
def f(x):
return lambd**a * x**(a-1) * sym.exp(-lambd*x) / math.factorial(a-1)
fv = np.vectorize(f)
x1 = np.linspace(0,1,10)
plt.plot(x1,fv(x1))
plt.show()