Создание массива Python Numpy из нескольких списков - PullRequest
0 голосов
/ 08 декабря 2018

Я узнаю больше о numpy и мне нужна помощь в создании массива numpy из нескольких списков.Скажем, у меня есть 3 списка,

a = [1, 1, 1] 
b = [2, 2, 2] 
c = [3, 3, 3] 

Как я могу создать новый массив с каждым списком в виде столбца?Это означает, что новый массив будет [[1, 2, 3], [1, 2, 3], [1, 2, 3]].Я знаю, как сделать это, просматривая списки, но я не уверен, есть ли более легкий способ сделать это.Кажется, что функция numpy concatenate близка, но я не мог понять, как заставить ее делать то, что мне нужно.Спасибо

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Не нужно использовать numpy.Python zip делает хорошую работу:

In [606]: a = [1, 1, 1] 
     ...: b = [2, 2, 2] 
     ...: c = [3, 3, 3] 
In [607]: abc = list(zip(a,b,c))
In [608]: abc
Out[608]: [(1, 2, 3), (1, 2, 3), (1, 2, 3)]

Но если ваше сердце настроено на использование numpy, хороший способ - создать двумерный массив и транспонировать его:

In [609]: np.array((a,b,c))
Out[609]: 
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])
In [610]: np.array((a,b,c)).T
Out[610]: 
array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])

Другие показывают, как это сделать с stack и column_stack, но под ними стоит concatenate.Так или иначе, они превращают списки в двумерные массивы, которые можно объединить по оси = 1, например,

In [616]: np.concatenate([np.array(x)[:,None] for x in [a,b,c]], axis=1)
Out[616]: 
array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])
0 голосов
/ 08 декабря 2018

Попробуйте с np.column_stack:

d = np.column_stack([a, b, c])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...