J'ai un tableau numpy 3D de forme (t,n1,n2)
:Vectorisation covariance NumPy pour le tableau 3D
x=np.random.rand(10,2,4)
je dois calculer un autre tableau 3D
y
qui est de forme (t,n1,n1)
tel que:
y[0] = np.cov[x[0,:,:])
et ainsi de suite pour toutes les tranches le long du premier axe.
Ainsi, une mise en œuvre loufoque serait -
y=np.zeros((10,2,2))
for i in np.arange(x.shape[0]):
y[i]=np.cov(x[i,:,:])
Est-il possible de vectoriser ce que je peux calculer toutes les matrices de covariance en une seule fois? J'ai essayé de faire:
x1= x.swapaxes(1,2)
y= np.dot(x,x1)
Mais cela n'a pas fonctionné.
Merci Divakar, en regardant maintenant en détail pour comprendre einsum. – dayum
Je viens de changer N/(N ** 2-N) en 1/(N-1) dans votre code pour l'aligner avec la formule standard et la facilité de compréhension – dayum