这个列表推导式以前没见过,现在用起来感觉还挺方便的。具体用法是这样的,比如说,我创建了一个一维numpy列表
x_np_list = np.linspace(0, 2, 1000)
y_np_list = np.array([function() for i in x_np_list]) # 这里function是函数名,括号可以有参数
至于为什么要这么创建,等等你就能弄明白了,我们这里为了画函数图像,当然要选则一些离散点,首先选择离散的横坐标 ,再要选择一一对应离散的纵坐标 ,这里要保证 与 的数组长度相等。
plt.plot(x, y)
这里
可以是
,
可以使
,那么这三个点坐标分别为
这条直线的形式就是
可以说列表推导式可以表达一个映射的关系
画一个三角波函数
三角波分为三段:上升段、下降段和平坦段
import numpy as np
import matplotlib.pyplot as plt
def triangle_wave(x, c, c0, hc):
x = x - int(x) # 三角波的周期为1,因此只取x坐标的小数部分进行计算
if x >= c:
r = 0.0
elif x < c0:
r = x / c0 * hc
else:
r = (c - x) / (c - c0) * hc
return r
x = np.linspace(0, 2, 1000)
y = np.array([triangle_wave(t, 0.6, 0.4, 1.0) for t in x])
plt.plot(x, y)
plt.show()