我得到了TypeError:只有长度为1的数组才能转换为Python标量
我想画这个函数。这很简单,但我在这方面遇到了麻烦。当我运行程序时,它说:我得到了TypeError:只有长度为1的数组才能转换为Python标量,python,Python,我想画这个函数。这很简单,但我在这方面遇到了麻烦。当我运行程序时,它说: import math import matplotlib.pyplot as plt import numpy as np x = np.arange(-4,5,1) y=(math.sqrt(math.cos(x)))*(math.cos(300*x))+(math.sqrt(abs(x))-0.7*(4-x*x)**0.1) plt.plot(x,y) plt.show() 文件“funct.py”,
import math
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-4,5,1)
y=(math.sqrt(math.cos(x)))*(math.cos(300*x))+(math.sqrt(abs(x))-0.7*(4-x*x)**0.1)
plt.plot(x,y)
plt.show()
文件“funct.py”,第7行,在
y=(数学sqrt(数学cos(x))*(数学cos(300*x))+(数学sqrt(abs(x))-0.7*(4-x*x)**0.1)
TypeError:只能将长度为1的数组转换为Python标量
只有numpy
版本的函数可以广播,而不是math
或内置的函数可以广播,而不是处理标量参数。你想要这个:
File "funct.py", line 7, in <module>
y=(math.sqrt(math.cos(x)))*(math.cos(300*x))+(math.sqrt(abs(x))-0.7*(4-x*x)**0.1)
TypeError: only length-1 arrays can be converted to Python scalar
当然,这也有它自己的问题:np.cos(x)
给出了一些负值,你试图将其平方根。谢谢Aryamcarthy,你真的帮助我解决了你的问题吗?如果是这样,您可以通过在正确答案旁边标记复选框来帮助未来的用户。如果没有,可以澄清什么?
y = (np.sqrt(np.cos(x)))*(np.cos(300*x))+(np.sqrt(np.abs(x))-0.7*(4-x*x)**0.1)