Atribuição de sub-matriz numpy com indexação mista avançada
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)
-
AcompanhamentoTenha 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.