Допустим, у меня есть массив N размером n x m x k и еще один массив B размером n x m с индексами от 1 до k.
Я хочу получить доступ к каждому n x m срезу A, используя индекс, указанный в этом месте в B,
давая мне массив размером п х м.
Редактировать: это, очевидно, не то, что я хочу!
[[Я могу добиться этого, используя take
, например:
A.take(B)
]] конец редактирования
Может ли это быть достигнуто с помощью необычной индексации?
Я бы подумал, A[B]
даст тот же результат, но это результаты
в массиве размером n x m x m x k (что я не очень понимаю).
Причина, по которой я не хочу использовать take
, заключается в том, что я хочу иметь возможность назначить этой части что-то вроде
A[B] = 1
Единственное рабочее решение, которое у меня есть, это
A.reshape(-1, k)[np.arange(n * m), B.ravel()].reshape(n, m)
но наверняка должен быть более простой путь?