Как разделить массив numy по вертикали из любого индекса столбца - PullRequest
0 голосов
/ 21 января 2019

Я хочу разделить массив NumPy на два подмассива, где точка разделения основана на идентификаторе столбца, то есть вертикальное разделение.Например, если я сгенерирую пустой массив формы [10,16] и хочу создать два подмассива, разделив его по индексу столбца 11, то я должен получить один подмассив размером [10,10], а другой -из [10,15].Таким образом, я следую numpy.hsplit здесь , но, похоже, он делает только четное разбиение (подмассивы должны быть равными).Я хочу иметь возможность:

  1. Разбить любой массив numpy по вертикали, независимо от размера подмассивов.
  2. Извлечь оба подмассива.

Чтобы смоделировать мой запрос, мой код содержит следующий код:

import numpy as np
C = [[1,2,3,4],[5,6,7,8],[9,10,11,12], [13,14,15,16]]
C = np.asarray(C)
C = np.hsplit(C, 3)
print(C)

Как видите, np.hsplit(C, 3) не работает, если расщепление не генерирует подобные подмассивы.Даже если бы я сделал np.hsplit(C, 2), я не знаю, как извлечь оба подмассива в отдельные массивы.

Для достижения моих целей, как я могу изменить этот код?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вам необходимо указать индексы в виде списка:

import numpy as np

C = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
C = np.asarray(C)

C = np.hsplit(C, [3])

print(C)

Выход

[array([[ 1,  2,  3],
       [ 5,  6,  7],
       [ 9, 10, 11],
       [13, 14, 15]]), array([[ 4],
       [ 8],
       [12],
       [16]])]
0 голосов
/ 21 января 2019

Использовать индексирование массива.

C[:,:3]  # All rows , columns 0 to 2
Out[29]: 
array([[ 1,  2,  3],
       [ 5,  6,  7],
       [ 9, 10, 11],
       [13, 14, 15]])

C[:,3:]  # All rows column 3 (to end in this case also 3).
Out[30]: 
array([[ 4],
       [ 8],
       [12],
       [16]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...