我正在执行如下情节:
for i in range(len(classederror)):
plt.scatter(xlag, classederror[i, :])
plt.show()
变量的大小为:
xlag = np.array(2, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250)
xlag.size = (11,)
classederror
= 176501行x 11列但是,我遇到了内存问题,这是由于classederror
的大小。
在没有内存问题的情况下,是否有一种pythonic /更有效的方法?
我正在尝试做什么
如下图所示,x轴为xlag
,y轴为classederror
我想在classederror
中为每一行绘制一系列x轴值,并研究数据的分布,最后我应该获得类似于下图的内容。
答案 0 :(得分:2)
绘制单个散点图当然比176501散点图更有效。
import numpy as np
import matplotlib.pyplot as plt
xlag = np.array([2, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250])
classederror = (np.random.randn(176501, 11)*25)*(0.2+np.sort(np.random.rand(11)))
plt.scatter(np.tile(xlag,len(classederror)), classederror.flatten())
plt.show()
鉴于可以从这样的情节中得出有限的信息,直接绘制11条线可能是有意义的。
import numpy as np
import matplotlib.pyplot as plt
xlag = np.array([2, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250])
classederror = (np.random.randn(176501, 11)*25)*(0.2+np.sort(np.random.rand(11)))
vals = np.c_[classederror.min(axis=0),classederror.max(axis=0)].T
x= np.c_[xlag,xlag].T
plt.plot(x,vals, color="C0", lw=2)
plt.show()
为了获得关于点密度的信息,可以使用其他方法,例如小提琴情节。
plt.violinplot(classederror, xlag, points=50, widths=20,
showmeans=True, showextrema=True, showmedians=True)