Выбрать строки из 3-го nd-массива - PullRequest
2 голосов
/ 09 июля 2020

ситуация выглядит следующим образом: если у меня есть массив numpy формы (64, 100, 300) и я хочу преобразовать его в (64, 1, 300) на основе массива индексов формы 64, что я должен делать? Скажем, у нас есть

a=np.random.randn(64, 100, 300)
indices = np.random.randint(low=0, high=100, size=64)

Я сейчас использую

a[:, indices, :]

, что не работает. Возвращаемый массив имеет форму (64, 64, 300), поскольку он пытается выбрать серию значений из каждого пакета.

1 Ответ

3 голосов
/ 09 июля 2020

Как следует из комментария выше:

a[np.arange(indices.size),indices,None]

Или в равной степени, но более читабельно:

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