python - 仅当添加和减去相同的值时,使用 pyplot 绘制常量函数才有效。为什么?

标签 python function matplotlib

我一直在玩 pyplot,有些事情很奇怪。

import numpy as np
import matplotlib.pyplot as plt


def f(x):
    return x**2


def g(x):
    return 5


def h(x):
    return 5+x-x


x = np.linspace(-3.0, 3.0, num=50)
plt.plot(x, f(x)) #works
plt.plot(x, g(x)) #crashes
plt.plot(x, h(x)) #works
plt.grid()
plt.show()

f(x) 按预期工作。 g(x) 崩溃并绘制一条线,我必须使用 h(x) 中的解决方法。这是为什么?所有这些函数都只返回数字,但其中一个有效,另一个无效。

最佳答案

x 是一个大小为 50 的 numpy 数组。f(x)h(x) 都是返回相同大小的数组。这样您就可以将其中一个与另一个进行比较。

g(x) 返回标量 5,其大小为 1。并且您无法针对大小为 1 的对象绘制大小为 50 的数组。

你可以像这样修改它:

def g(x):
    return np.ones_like(x)*5

这将返回一个与输入数组具有相同大小(和形状)的数组,因此您可以根据输出绘制输入。

关于python - 仅当添加和减去相同的值时,使用 pyplot 绘制常量函数才有效。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61739340/

相关文章:

python:装饰器名称应该是 Action 还是描述?

Python 和内存映射?

python - 打开简历错误 : (-215) scn == 3 || scn == 4 in function cvtColor

c++ - 为什么 strlen() 也适用于字符数组?

python : How to create a 2D density map/heat map

python - 如何向 matplotlib.pylab.imshow() 对话框添加按钮?

python - 如何使用 PIL 保存超过 3 个 channel 的图像?

php - 检测数组 PHP 中的循环

swift - 将类作为参数传递给函数以便快速进行比较?

python - 使用 matplotlib 的 savefig 保存从 python pandas 生成的图(AxesSubPlot)