Atribuição de sub-matriz numpy com indexação mista avançada

Pergunta original

Estou recebendo uma mensagem de erro muito estranha quando tento atribuir alguns dos elementos de uma matriz. Estou usando uma combinação de uma fatia e um conjunto de índices. Veja o seguinte exemplo simples.

 import scipy as sp

 a = sp.zeros((3, 4, 5))
 b = sp.ones((4, 5))

 I = sp.array([0, 1, 3])

 b[:, I] = a[0, :, I]

Este código gera o seguinteValueError:

ValueError: incompatibilidade de forma: a matriz de valor da forma (3,4) não pôde ser transmitida para o resultado da indexação da forma (3,4)

-

Acompanhamento

Tenha cuidado ao usar uma combinação de fatia e seg. de números inteiros. Como apontado no github:

x = rand(3, 5, 7)

print(x[0, :, [0,1]].shape)
# (2, 5)

print(x[0][:, [0,1]].shape)
# (5, 2)

É assim que o numpy é projetado para funcionar, mas, no entanto, é um pouco confuso que x [0] [:, I] não seja o mesmo que x [0,:, I]. Como esse é o comportamento que eu quero, escolho usar x [0] [:, I] no meu código.

questionAnswers(3)

yourAnswerToTheQuestion