我有两个形状为(16,850)的numpy数组(a和b)。 我正在逐行显示它们,例如:
plt.figure()
plt.plot(a[0], b[0])
plt.plot(a[1], b[1])
plt.plot(a[2], b[2])
...
plt.show()
我是否需要使用for循环以更符合Python风格的方式来完成它?
我有两个形状为(16,850)的numpy数组(a和b)。 我正在逐行显示它们,例如:
plt.figure()
plt.plot(a[0], b[0])
plt.plot(a[1], b[1])
plt.plot(a[2], b[2])
...
plt.show()
我是否需要使用for循环以更符合Python风格的方式来完成它?
plot
,每列将被创建为单独的绘图对象。我们转置两个输入,以便它会将每一行单独绘制。a = np.random.rand(16, 850)
b = np.random.rand(16, 850)
plt.plot(a.T, b.T)
plt.show()
plt.figure()
for i in range(len(a)):
plt.plot(a[i], b[i])
plt.show()
但是Suever展示的方式更加Pythonic。然而,并不是每个函数都内置了这样的功能。
绘制许多线条的最有效方法是使用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个点的一堆线。
在更少时间内绘制多个图表 - Python的答案中,找到不同方法及其效率的比较。