Вы можете использовать понимание списка следующим образом.Это в основном использует комбинацию цикла for, оператора if-else в одной строке.Здесь вы используете условие if
, чтобы проверить, находится ли x
между 0,1 и 0,3, и сохраняет 1 в hx
, иначе 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](https://i.stack.imgur.com/9wya4.png)