【问题标题】:i got TypeError: only length-1 arrays can be converted to Python scalars [duplicate]我得到了 TypeError:只有长度为 1 的数组可以转换为 Python 标量 [重复]
【发布时间】:2017-04-29 21:32:55
【问题描述】:
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()

我想绘制这个函数。这很简单,但我遇到了麻烦。当我运行程序时,它说:

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

【问题讨论】:

    标签: python


    【解决方案1】:

    只有numpy 版本的函数,而不是来自mathbuiltins 的函数,可以广播而不是处理标量参数。你想要这个:

    y = (np.sqrt(np.cos(x)))*(np.cos(300*x))+(np.sqrt(np.abs(x))-0.7*(4-x*x)**0.1)
    

    当然,这有其自身的问题:np.cos(x) 给出了一些负值,您尝试对其进行平方根。

    【讨论】:

    • 谢谢aryamccarthy,你真的帮了我
    • 您的问题解决了吗?如果是这样,您可以通过标记正确答案旁边的复选框来帮助未来的用户。如果不是,可以澄清什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2013-03-15
    • 2017-07-06
    • 2016-08-06
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多