我是编程的初学者,我正在使用python 3.0
我有一个功能 如果0.1 <= x <= 0.3则h(x)= 1,否则= 0
我有
L = 1
N=200
x = numpy.linspace(0,L,N)
我想为h(x)定义一个函数,该函数根据上面给出的条件循环遍历x的值并返回1或0
答案 0 :(得分:3)
答案 1 :(得分:1)
您可以按以下方式使用列表理解。这基本上是在一个衬里中使用for循环,if-else语句的组合。在这里,您使用if
条件来检查x
是否在0.1到0.3之间,并在hx
中保存1,否则保存为0。
import numpy
import matplotlib.pyplot as plt
L = 1
N=200
x = numpy.linspace(0,L,N)
hx = [1 if 0.1 <= i <= 0.3 else 0 for i in x] # list comprehension
plt.plot(x, hx)
plt.xlabel('x', fontsize=18)
plt.ylabel('h(x)', fontsize=18)
替代向量化方法:此处(x>=0.1) & (x<=0.3)
返回x满足条件的索引,对于这些索引,将hx
评估为1。在这里初始化hx
全为零。
hx = numpy.zeros(N)
hx[(x>=0.1) & (x<=0.3)] = 1
将其用作功能
def get_hx(x):
# hx = numpy.zeros(N)
# hx[(x>=0.1) & (x<=0.3)] = 1
hx = [1 if 0.1 <= i <= 0.3 else 0 for i in x]
return hx
hx = get_hx(x)