如果这个错误的解决方案微不足道,我很抱歉,但我进行了广泛的研究,但没有运气。互联网上的每个答案都说当您尝试使用数组作为标量时会出现此错误,但我不明白如何在此处应用此信息。这是代码:
import numpy as np
from math import e, sin
from scipy import misc
import matplotlib.pyplot as plt
def f(x):
return x-e**-x
a = 0
b = 1
pas = 0.1
x = np.arange(a, b+pas, pas)
plt.plot(x, f(x), 'r-')
plt.show()
它工作没有问题,直到我尝试使用sin以某种方式发挥作用:
def f(x):
return x-e**-x+sin(x)
在这种情况下,我收到以下错误:
回溯(最近一次调用最后一次):文件“a.py”,第 14 行,在 中
plt.plot(x, f(x), 'r-') 文件“a.py”,第 7 行,f 中
返回 10x-9(e**-x)+int(sin(x)) TypeError:只有 size-1 数组可以转换为 Python 标量
我不明白为什么它认为它不是标量。我尝试计算 f(0)、f(0.5)、f(1),但输出始终是标量。这里发生了什么事? sin 函数有什么特别之处?
当您使用您的f(x)
用于绘图,x
确实是一个数组,而不是一个标量。
因为,由于某种原因我无法理解,你已经导入了sin
and exp
from math
而不是来自numpy
, the sin(x)
您在定义中使用的f(x)
期望一个标量。
Python 运行时会尝试强制转换你的x
(x =np.arange(a, b+pas, pas)
) 转换为标量浮点数,但会引发类型错误
TypeError: only size-1 arrays can be converted to Python scalars
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)