2013-04-08 3 views
2

Я хотел бы построить одну строку из 2-мерного массива numpy против 1d-списка в python. Например, я хотел бы построить, используя Matplotlib строку 'я', как показано нижеplot single row of 2d numpy array from 1d list

|0 0 0 0 0| 
    |1 1 1 1 1| 
i |2 2 2 2 2| 
    |. . . . .| 
    |n n n n n| 

против

[0, 100, 200, 300, 400] 

То, что я в настоящее время:

plt.plot(list1, 2dimArray[i]) 

, но это не работает. У меня была эта функциональность, работая, когда я составлял 1d-списки против 1d-списков, но мне приходилось многомерно и выбирать numpy.

Есть ли все равно для этого?

+1

Если 'A' ваш 2D массив, и' x' ваш 1D, работает ли 'plt.plot (x, A [i,:])' '? –

+0

Какая ваша ошибка? – askewchan

ответ

2

Используя данные из вашего комментария ниже, это работает для меня:

In [1]: import numpy as np 

In [2]: x = np.arange(0,1100,100) 

In [3]: y = np.random.rand(6,11) 

In [4]: i = 2 

In [5]: plt.plot(x, y[i]) 
Out[5]: [<matplotlib.lines.Line2D at 0x1043cc790>] 

plot of row 2

дело в том, что x и y аргументы plot должны иметь одинаковую форму (или, по меньшей мере, одна и та же первая запись в форме).

In [6]: x.shape 
Out[6]: (11,) 

In [7]: y.shape 
Out[7]: (6, 11) 

In [8]: y[i].shape 
Out[8]: (11,) 

Возможно, один из ваших элементов, сгенерированный программой не фактически имеют форму вы считаете, что он делает?

Это также должно работать, если вы используете список вместе с Numpy массива (plt.plot, вероятно, преобразовать список в массив):

In [9]: xl = range(0, 1100, 100) 

In [10]: plt.plot(xl, y[i]) 
Out[10]: [<matplotlib.lines.Line2D at 0x10462aed0>] 
+0

Это ошибка, которую я получаю: ValueError: x и y должны иметь такое же первое измерение – sgchako

+0

Можете ли вы рассказать нам, что такое 'b.shape' и' a.share'? – askewchan

+0

x: 1d, сконструированный таким образом [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000] y: 2dim массив, построенный как таковой np.zeros ((6,11)) – sgchako