绘制选定的numpy数组行

时间:2014-10-02 08:00:02

标签: arrays numpy matplotlib

考虑一个小的numpy数组:

array([[  0.,   1.,   0.,   1.,   0.,   0.,   0.,   0.,   0.,   1.],
   [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.],
   [  0.,   0.,   0.,   0.,  18.,  15.,  25.,   0.,   0.,   0.],
   [  0.,   0.,   0.,  23.,  19.,  20.,  20.,   0.,   0.,   0.],
   [  0.,   0.,  20.,  22.,  26.,  23.,  18.,   0.,   0.,   0.],
   [  0.,   0.,   0.,  23.,  16.,  20.,  13.,   0.,   0.,   0.],
   [  0.,   0.,   0.,   0.,  18.,  20.,  18.,   0.,   0.,   0.],
   [  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.],
   [  0.,   1.,   0.,   0.,   1.,   0.,   0.,   0.,   0.,   0.]])

我想绘制,从行号3到行号6,即我的numpy数组的一部分(我来自matlab背景)。我怎么能循环这个?或者如何在同一个图表中绘制我的numpy数组的多行?

到目前为止,我已经尝试过;我定义了一个任意的x:

x = np.arange(0,10)

然后如果我使用

plt.plot(x,data[3,:])

绘制第三行,它确实很好。如果我尝试,就会出现问题:

plt.plot(x,data[3:4,:])

我得到错误" x和y必须具有相同的第一维",我理解这是因为他将第3行和第4行堆叠在一起,因此x和y不具有相同的维度。我怎么能克服这个?

谢谢

3 个答案:

答案 0 :(得分:4)

如错误所示,您的data.shape = (1,10)与您的输入x.shape = (10,)不一致。要解决此问题,您只需使用.T转换数据,

plt.plot(x, data[3:4,:].T)

此外,请注意data[3:4,:]data[3,:]相同,例如,您需要使用data[3:5,:]来获取第3行和第4行。

答案 1 :(得分:2)

您可以尝试:

for i in range(3):
    plt.plot( x , data[ i , : ] )

plt.show()

如果您想要一系列行,例如3到6行,您可以使用:

range(3,7,1),其中1是步骤,3是起始行,7是我们想要绘制的最后一行(6)加一个

答案 2 :(得分:2)

更好地应用psuedocubi's答案。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,10,10)
y = np.array(YOUR DATA HERE)

plt.plot(x,a[3:4].T,'r--',label="x vs y1") #CONTAINS YOUR 3RD ROW
plt.plot(x,a[4:5].T,'g--',label="x vs y2") #CONTAINS YOUR 4TH ROW
plt.plot(x,a[5:6].T,'b--',label="x vs y3") #CONTAINS YOUR 5TH ROW
plt.legend(loc='best')
plt.xlabel("x")
plt.ylabel("y")
plt.show()

YOUR DATA PLOTTED WITH ARBITARY X

此处x已使用您自己的数据绘制!