создать пустой массив на основе и добавить существующий массив - PullRequest
0 голосов
/ 12 сентября 2018

Я хочу инициализировать пустой массив numpy (E), а затем добавить выбранные строки из существующего массива (D) в пустой массив (E).Я не мог инициализировать пустой массив, соответствующий размеру D. Как я могу решить эту проблему.

E = np.array([ [ ] ])

D = np.array([ [20, 23 ], [19, 23],[19,22] ]) 

for i in np.where(index):  ## assume index value is ([0],[2])

    E = np.append( E , D[i] , axis = 0)

Я пытаюсь получить следующий результат:

E = ([ [20, 23 ], [19,22] ]) 

Ошибка: все размеры входного массива, кроме оси конкатенации, должны точно совпадать

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Не использовать np.append

np.append создает копии данных. Вы найдете это неэффективным. Этого следует избегать, если в этом нет крайней необходимости.

Читать в np.array и нарезать

Конвертируйте ваш набор одноэлементных списков в массив NumPy и напрямую индексируйте:

D = np.array([[20, 23], [19, 23], [19, 22]])
index = ([0], [2])

E = D[np.array(index).ravel()]

Результат:

array([[20, 23],
       [19, 22]])
0 голосов
/ 12 сентября 2018

Зачем инициализировать пустой массив? Вы можете просто нарезать D по вашим индексам:

index = [0,2]

E = D[index]

>>> E
array([[20, 23],
       [19, 22]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...