【问题标题】:Plot multiple graphs without using a for loop在不使用 for 循环的情况下绘制多个图
【发布时间】:2021-01-03 15:15:16
【问题描述】:

所以,我的问题可能不完全是标题中的内容。

我有一个函数

y = a*x + b

我想用不同的 b 值绘制 y。

我知道我可以做到以下几点:

import numpy as np
import matplotlib.pyplot as plt

a = 2
x = np.array([0,1,2,3,4])
b = 0

for i in range(10):
    y = a*x + b
    b = b+1
    plt.plot(x,y)
 

这正是我想要的。

但是,我可以通过某种方式做到这一点 b = np.array([0,1,2,3,4,5,6,7,8,9])?那么,我的代码可能类似于:

import numpy as np
import matplotlib.pyplot as plt

a = 2
x = np.array([0,1,2,3,4])
b = np.array([0,1,2,3,4,5,6,7,8,9])

y = a*x + b
plt.plot(x,y)
 

【问题讨论】:

    标签: numpy matplotlib graph algebra


    【解决方案1】:

    是的,您可以使用矩阵运算创建一个二维矩阵,其运算结果为y = a*x + b

    a = 2
    x = np.array([0,1,2,3,4])
    b = np.array([0,1,2,3,4,5,6,7,8,9])
    
    y = a*x[:,None]+b
    plt.plot(x, y)
    

    编辑: 我正在展示@Quang Hoang 提供的解决方案,它比我的要简单得多。 原代码是:

    y = np.tile(a*x, (b.size,1)) + b[:,np.newaxis]
    plt.plot(x, y.T)
    

    【讨论】:

    • 还有y = a*x[:, None] + bplt.plot(x,y)
    • @QuangHoang 当然要简单得多。不知道为什么我去了另一个方向。谢谢你
    • 酷!但是,我想我不明白这里发生了什么。和y = a*np.transpose(x) + b不一样吗?
    • 不,您需要将向量转换为二维矩阵。向量的转置是同一个向量。见stackoverflow.com/questions/29241056/…
    猜你喜欢
    • 1970-01-01
    • 2021-05-25
    • 2022-01-05
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多