gpt4 book ai didi

python - 为什么我的函数的输出是二进制的?

转载 作者:行者123 更新时间:2023-11-28 22:43:23 24 4
gpt4 key购买 nike

我编写了一个可微分的 Heaviside 函数并将其矢量化。但是,输出似乎是奇数和二进制的。代码如下:

import numpy as np
import matplotlib.pyplot as plt

def heaviside(x, epis):
if (x>= epis):
y=1
elif (x< -epis):
y=0;
else:
y = 0.5 + x/(2*epis) + np.sin(np.pi*x/epis)/(2*np.pi);

print (x, y);
return y;

x1 = np.linspace(-1, 1, 100);
vheaviside = np.vectorize(heaviside);
y1 = vheaviside(x1, 0.2);
plt.plot(x1, y1, 'b', alpha=0.3)
plt.show()

输入是 [-1, 1] 中的数组,输出应该是连续的 Heaviside 函数。但是,所有输出都是 01。为什么?

最佳答案

您需要在 vectorize 时指定它应该使用 floats 的函数:

vheaviside = np.vectorize(heaviside, [float])

否则,根据文档:

The output type is determined by evaluating the first element of the input

在这种情况下是一个整数。或者,确保 heaviside 总是返回一个 float ,通过替换例如y = 1y = 1.0

关于python - 为什么我的函数的输出是二进制的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30844987/

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