使用循环为numpy.linspace定义函数

时间:2018-10-25 19:22:14

标签: python loops numpy

我是编程的初学者,我正在使用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

2 个答案:

答案 0 :(得分:3)

您可以使用np.logical_andastype

np.logical_and(x >= 0.1, x <= 0.3).astype(int)

显示行为的图:

enter image description here

答案 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)

enter image description here