我有两个numpy数组(a和b),每个数组的形状(16,850)。我会逐行显示它们,例如
plt.figure()
plt.plot(a[0], b[0])
plt.plot(a[1], b[1])
plt.plot(a[2], b[2])
...
plt.show()
我是否应该使用for循环以更加pythonic的方式进行?
答案 0 :(得分:6)
您可以将多维数组传递给plot
,并且每个列都将作为单独的绘图对象创建。我们转置两个输入,以便分别绘制每一行。
a = np.random.rand(16, 850)
b = np.random.rand(16, 850)
plt.plot(a.T, b.T)
plt.show()
答案 1 :(得分:0)
这将有效:
plt.figure()
for i in range(len(a)):
plt.plot(a[i], b[i])
plt.show()
但Suever所展示的方式却是Pythonic。但是,并非每个函数都具有内置的功能。
答案 2 :(得分:0)
绘制多条线的最有效方法是使用LineCollection
。看起来像
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
x = np.random.rand(N,3)
y = np.random.rand(N,3)
data = np.stack((x,y), axis=2)
fig, ax = plt.subplots()
ax.add_collection(LineCollection(data))
用于一串由3个点组成的线。
在对Many plots in less time - python的回答中找到不同方法及其效率的比较。