Je travaille sur un projet python et utilise numpy. J'ai souvent besoin de calculer les produits de matrices de Kronecker par la matrice d'identité. C'est un gros goulot d'étranglement dans mon code, donc je voudrais les optimiser. Il y a deux types de produits que je dois prendre. La première est:Produit Kronecker efficace avec matrice d'identité et matrice régulière - NumPy/Python
np.kron(np.eye(N), A)
Celui-ci est assez facile d'optimiser en utilisant simplement scipy.linalg.block_diag. Le produit est équivalent à:
la.block_diag(*[A]*N)
Qui est environ 10 fois plus rapide. Cependant, je ne suis pas sûr sur la façon d'optimiser le deuxième type de produit:
np.kron(A, np.eye(N))
Y a-t-il un tour similaire que je peux utiliser?
Ah, merci bien sûr! Pour référence, cela donne une accélération 6-7x dans mes tests. – user3930598
@ user3930598 Bon à savoir! Ajouté le mien. On dirait qu'il y a aussi. – Divakar