Как составлять элементы из массива, исключая один индекс - PullRequest
0 голосов
/ 13 февраля 2019

Я получил массив 5x10x100 и хочу исключить один индекс и сложить остальные, в результате чего получился массив 40x100.

old_arr.shape
>> (5, 10, 100)

Я попробовал следующий однострочный генератор:

i_to_exclude = 4
new_arr = np.array([element for i, element in enumerate(old_arr) if i != i_to_exclude])
new_arr.shape
>> (4, 10, 100)

Я не уверен, как использовать Генератор, чтобы сложить списки вместо того, чтобы добавлять их.

1 Ответ

0 голосов
/ 13 февраля 2019

Попробуйте:

np.vstack(np.delete(old_arr, i_to_exclude , axis = 0))

пример :

old_arr = np.arange(16).reshape((4,2,2))
#array([[[ 0,  1],
#        [ 2,  3]],
#       [[ 4,  5],
#        [ 6,  7]],
#       [[ 8,  9],
#        [10, 11]],
#       [[12, 13],
#        [14, 15]]])

i_to_exclude = 3
new_arr = np.vstack(np.delete(old_arr, i_to_exclude , axis = 0))
#array([[ 0,  1],
#       [ 2,  3],
#       [ 4,  5],
#       [ 6,  7],
#       [ 8,  9],
#       [10, 11]])

Это также будет быстрее, чем использование цикла for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...