'only length-1 arrays can be converted to Python scalars' 错误
'only length-1 arrays can be converted to Python scalars' error
我有这样的Python代码
import numpy as np
import matplotlib.pyplot as plt
import math
from scipy import optimize as opt
def func1(x):
f1 = math.exp(x-2)+x**3-x
return f1
solv1_bisect = opt.bisect(func1, -1.5, 1.5)
x1 = np.linspace(-1.5,1.5)
y1 = func1(x1)
plt.plot(x1,y1,'r-')
plt.grid()
print('solv1_bisect = ', solv1_bisect)
我收到了
之类的错误消息
TypeError: only length-1 arrays can be converted to Python scalars
请帮我解决一下,谢谢!
问题是您使用的 math.exp
需要 Python 标量,例如:
>>> import numpy as np
>>> import math
>>> math.exp(np.arange(3))
Traceback (most recent call last):
File "path", line 3331, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-10-3ac3b9478cd5>", line 1, in <module>
math.exp(np.arange(3))
TypeError: only size-1 arrays can be converted to Python scalars
改用np.exp
:
def func1(x):
f1 = np.exp(x - 2) + x ** 3 - x
return f1
np.exp
和 math.exp
的区别在于 math.exp
使用 Python 的数字(浮点数和整数),而 np.exp
可以使用麻木的数组。在您的代码中,参数 x
是一个 numpy 数组,因此是错误。
我有这样的Python代码
import numpy as np
import matplotlib.pyplot as plt
import math
from scipy import optimize as opt
def func1(x):
f1 = math.exp(x-2)+x**3-x
return f1
solv1_bisect = opt.bisect(func1, -1.5, 1.5)
x1 = np.linspace(-1.5,1.5)
y1 = func1(x1)
plt.plot(x1,y1,'r-')
plt.grid()
print('solv1_bisect = ', solv1_bisect)
我收到了
之类的错误消息TypeError: only length-1 arrays can be converted to Python scalars
请帮我解决一下,谢谢!
问题是您使用的 math.exp
需要 Python 标量,例如:
>>> import numpy as np
>>> import math
>>> math.exp(np.arange(3))
Traceback (most recent call last):
File "path", line 3331, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-10-3ac3b9478cd5>", line 1, in <module>
math.exp(np.arange(3))
TypeError: only size-1 arrays can be converted to Python scalars
改用np.exp
:
def func1(x):
f1 = np.exp(x - 2) + x ** 3 - x
return f1
np.exp
和 math.exp
的区别在于 math.exp
使用 Python 的数字(浮点数和整数),而 np.exp
可以使用麻木的数组。在您的代码中,参数 x
是一个 numpy 数组,因此是错误。