Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我得到了TypeError:只有长度为1的数组才能转换为Python标量_Python - Fatal编程技术网

我得到了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)