关于Python的列表推导式用于画函数图像

这个列表推导式以前没见过,现在用起来感觉还挺方便的。具体用法是这样的,比如说,我创建了一个一维numpy列表

x_np_list = np.linspace(0, 2, 1000)
y_np_list = np.array([function() for i in x_np_list])	# 这里function是函数名,括号可以有参数

至于为什么要这么创建,等等你就能弄明白了,我们这里为了画函数图像,当然要选则一些离散点,首先选择离散的横坐标 x x ,再要选择一一对应离散的纵坐标 y y ,这里要保证 x x y y 的数组长度相等。

plt.plot(x, y)

这里 x x 可以是 [ 1 , 2 , 3 ] [1, 2, 3] y y 可以使 [ 1 , 2 , 3 ] [1,2,3] ,那么这三个点坐标分别为 ( 1 , 1 ) , ( 2 , 2 ) , ( 3 , 3 ) (1,1),(2,2),(3,3)
这条直线的形式就是
y = x y=x
可以说列表推导式可以表达一个映射的关系

画一个三角波函数

三角波分为三段:上升段、下降段和平坦段

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()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44864262/article/details/107783312