2015-06-10 2 views
3

Я новичок в python, и у меня есть вопрос о numpy.reshape. Я в настоящее время есть 2 списка значений, как это:Python numpy: переименовать список в повторяющийся 2D-массив

x = [0,1,2,3] 
y = [4,5,6,7] 

И я хочу, чтобы они были в отдельных 2D массивов, где каждый элемент повторяется для длины исходных списков, например:

xx = [[0,0,0,0] 
    [1,1,1,1] 
    [2,2,2,2] 
    [3,3,3,3]] 

yy = [[4,5,6,7] 
     [4,5,6,7] 
     [4,5,6,7] 
     [4,5,6,7]] 

Есть ли способ сделать это с помощью numpy.reshape, или есть лучший способ, который я мог бы использовать? Я был бы очень признателен за подробное объяснение. Благодаря!

+1

Это именно то, что 'np.meshgrid' делает – swenzel

ответ

4

numpy.meshgrid сделают это за вас.

N.B. От вашей требуемой мощности, это выглядит, как вы хотите ij индексации, а не по умолчанию xy

from numpy import meshgrid 

x = [0,1,2,3] 
y = [4,5,6,7] 
xx,yy=meshgrid(x,y,indexing='ij') 

print xx 
>>> [[0 0 0 0] 
    [1 1 1 1] 
    [2 2 2 2] 
    [3 3 3 3]] 

print yy 
>>> [[4 5 6 7] 
    [4 5 6 7] 
    [4 5 6 7] 
    [4 5 6 7]] 

Для справки, вот xy индексации

xx,yy=meshgrid(x,y,indexing='xy') 

print xx 
>>> [[0 1 2 3] 
    [0 1 2 3] 
    [0 1 2 3] 
    [0 1 2 3]] 

print yy 
>>> [[4 4 4 4] 
    [5 5 5 5] 
    [6 6 6 6] 
    [7 7 7 7]] 
Смежные вопросы