首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定函数的错误:只能将大小为1的数组转换为Python标量

给定函数的错误:只能将大小为1的数组转换为Python标量
EN

Stack Overflow用户
提问于 2021-06-01 04:17:14
回答 2查看 31关注 0票数 0

我是一个新手,目前正在尝试绘制此函数,以便我可以选择应该在ChemistryLab中执行实验的x值范围。

我找到了不同的关于绘制函数的文章,它们都适用于像sin(x)这样的泛型函数。但是一旦我输入了我的函数,它就不起作用了。问题已经出现在前两行之后:

代码语言:javascript
复制
import numpy as np
import math

X = np.linspace(0, 512, 256)
f = ((x+22)- math.sqrt((x+22)**2-4*2*x))

--> TypeError: only size-1 arrays can be converted to Python scalars

我发现一些帖子说X应该是矢量化的,但是我想不出一个解决方案。

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2021-06-01 04:26:41

创建一个矢量化函数。例如:

代码语言:javascript
复制
    equation_func = np.vectorize(math.sqrt)
    new_f = equation_func(X)

将math.sqrt替换为包含更复杂的方程的函数,您就可以轻松自如了。

票数 0
EN

Stack Overflow用户

发布于 2021-06-01 04:38:10

在Python中实现数学函数的一个好方法可能并不奇怪,就是将其作为Python函数。然后,例如,您可以在列表理解中使用该函数来获得一个值数组:

代码语言:javascript
复制
import numpy as np
import math
import matplotlib.pyplot as plt

X = np.linspace(0, 512, 256)

def f(x):
    return x + 22 - math.sqrt((x + 22)**2 - 8 * x)

Y = np.array([f(x) for x in X])

plt.plot(X, Y);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67779763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档