Учитывая массив (n, 3), как получить список из 3 (n, 1) -массивов - PullRequest
0 голосов
/ 06 мая 2020

Предположим, у меня есть такой массив:

import numpy as np

np.array([[0, 0, 0],
          [1, 1, 1]])

здесь имеет форму (2,3), но может быть (n, 3). Я хотел бы преобразовать его в список массивов, представляющих столбцы.

Желаемый результат

[array([[0],[1]]), array([[0],[1]]), array([[0],[1]])]

Я попытался понять список, изменить форму и т.д. c. но мне не удается туда добраться.

Ответы [ 2 ]

2 голосов
/ 06 мая 2020

Вы можете использовать функцию numpy hsplit () следующим образом:

>>> a=np.array([[0, 0, 0],
...        [1, 1, 1]])

>>> b,c,d = np.hsplit(a,3)
>>> b
array([[0],
       [1]])
>>> c
array([[0],
       [1]])
>>> d
array([[0],
       [1]])

Чтобы сделать его одним списком из трех массивов:

>>> myList = [*np.hsplit(a,3)]
>>> myList
[array([[0],
       [1]]), array([[0],
       [1]]), array([[0],
       [1]])]
1 голос
/ 06 мая 2020

Используя списки, у вас есть 2 варианта:

import numpy as np

a = np.array([[0, 0, 0],
              [1, 1, 1]])
[c for c in a.T]
[array([0, 1]), array([0, 1]), array([0, 1])]

[a[:,i] for i in range(a.shape[1])]
[array([0, 1]), array([0, 1]), array([0, 1])]

#or as hpaulj suggested in the comment
[a[:,[i]] for i in range(a.shape[1])]
[array([[0],[1]]),
 array([[0],[1]]),
 array([[0],[1]])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...