gpt4 book ai didi

python - 对 numpy 元组进行矢量化时函数返回意外值

转载 作者:行者123 更新时间:2023-12-01 23:04:36 25 4
gpt4 key购买 nike

我想快速看一下下面的分布函数,发现我尝试这样做的方式有问题。将函数应用于 x_range 时,所有值最终都为 0。我对此感到非常困惑,并且很难理解为什么会这样。在这种情况下我使用 numpy 错了吗?至少这是我唯一的解释,但我无法找到任何类型的解释来解释为什么我会看到这些结果。

下面是我的代码。

from matplotlib import pyplot as plt
import numpy as np


def F(x):
return 0 if x <= 0 \
else .0025 * x if x <= 100 \
else .25 if x <= 200 \
else .0025 * x - .25 if x <= 300 \
else .0025 * x if x <= 400 \
else 1


x_range = np.linspace(0, 410, 1000)
plt.plot(np.vectorize(F)(x_range))
plt.show()

另外,有没有人知道一种更优雅的方法来简单地绘制一个区间内的函数?我不太喜欢将函数矢量化并将其应用于专门生成的数组以仅用于绘图。我假设应该有内置的 matplotlib 功能来在 R 的某些子空间上绘制函数。

最佳答案

vectorize 的文档说:

The data type of the output of vectorized is determined by calling the function with the first element of the input. This can be avoided by specifying the otypes argument.

由于您的第一个输出是一个整数,它认为您需要整数。如果您将想要的输出类型传递给otypes,您的问题就会消失:

from matplotlib import pyplot as plt
import numpy as np


def F(x):
return 0 if x <= 0 \
else .0025 * x if x <= 100 \
else .25 if x <= 200 \
else .0025 * x - .25 if x <= 300 \
else .0025 * x if x <= 400 \
else 1


x_range = np.linspace(0, 410, 1000)
plt.plot(np.vectorize(F, otypes=[float])(x_range))
plt.show()

enter image description here

关于python - 对 numpy 元组进行矢量化时函数返回意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71188943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com