atribuição de python em array vs escalar
Eu tenho uma matriz 2DA
de forma(4,3)
e uma matriz 1Da
de forma(4,)
. Eu quero trocar as duas primeiras linhas deA
, bem como os dois primeiros elementos ema
. Eu fiz o seguinte:
A[0,:],A[1,:] = A[1,:],A[0,:]
a[0],a[1] = a[1],a[0]
Aparentemente, funciona paraa
, mas falha paraA
. Agora, a segunda linha se torna a primeira linha, mas a primeira linha permanece inalterada. Se eu fizer o seguinte:
first_row_copy = A[0,:].copy()
A[0,:] = A[1,:]
A[1,:] = first_row_copy
Então, parece funcionar. Por que o primeiro método não funciona? (mas trabalha paraa
) Além disso, qual é a diferença entreA_copy = A[0,:].copy()
eA_copy = A[0,:]
?