Необычное индексирование массива NumPy - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть массив с формой (9099, 2, 26).

Из этого массива я хотел бы получить новый с формой (9099, 2, 1), где значение для 3-го измерения будет определено другим массивом 1d (9099,).Этот 1-й массив каждого значения на самом деле является индексом необходимого значения 3-го измерения в моем основном массиве.

Так, например, 9-й элемент моего основного массива выглядит так:

In [1]: a[9,:,:] Out [1]: array([[ 0, 1011165, 1098400, 1140065, 1172240, 1203971, 1439189, 1600540, 2281575, 8888888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [ 280000, 263998, 974020, 653653, 888965, 851341, 466195, 424801, 0, 9999999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

Девятый элемент массива 1d:

In [2]: b[9] Out [2]: 9

Таким образом, 10-й элемент требуемого вывода должен выглядеть следующим образом:

In [3]: c[9,:,:] Out [3]: array([[8888888], [9999999]])

Я полагаю, это должно быть как-то сделано с необычной индексацией?

Спасибо!

1 Ответ

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

Вы можете использовать

a[np.arange(len(index)), :, index]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...