Je suis en train d'implémenter la Multiplication Matricielle de Strassen en utilisant python. Dans l'étape de division, nous divisons une matrice plus grande en plus petites sous-matrices. Y at-il une fonction numpy intégrée pour diviser une matrice?Comment diviser une matrice en 4 blocs en utilisant numpy?
6
A
Répondre
11
Pas exactement, mais en utilisant la notation de découpage de tableau, vous devriez être capable de le faire vous-même assez facilement.
>>> A = np.linspace(0,24,25).reshape([5,5,])
>>> A
array([[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
[ 15., 16., 17., 18., 19.],
[ 20., 21., 22., 23., 24.]])
Marque B 2x2 en haut à gauche dans A:
>>> B = A[0:2,0:2]
Notez que B est une vue, il partage des données avec un
>>> B[1,1] = 60
>>> print A
[[ 0. 1. 2. 3. 4.]
[ 5. 60. 7. 8. 9.]
[ 10. 11. 12. 13. 14.]
[ 15. 16. 17. 18. 19.]
[ 20. 21. 22. 23. 24.]]
Si vous avez besoin de copier les données de A, utilisez la méthode de copie:
>>> B = A[0:2,0:2].copy()
>>> B
array([[ 0., 1.],
[ 5., 60.]])
>>> B[1,1] = 600
>>> B
array([[ 0., 1.],
[ 5., 600.]])
>>> A
array([[ 0., 1., 2., 3., 4.],
[ 5., 60., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
[ 15., 16., 17., 18., 19.],
[ 20., 21., 22., 23., 24.]])
2
je suis tombé le même problème et trouvé des fonctions intégrées de numpy pour diviser ma matrice en 4 sous-matrices (mes matrices sont de taille 2^N * 2^N)
Voici le code que j'ai écrit:
upper_half = np.hsplit(np.vsplit(my_matrix, 2)[0], 2)
lower_half = np.hsplit(np.vsplit(my_matrix, 2)[1], 2)
upper_left = upper_half[0]
upper_right = upper_half[1]
lower_left = lower_half[0]
lower_right = lower_half[1]
Bonus pour les recombiner en utilisant numpy:
C=np.vstack([np.hstack([c11, c12]), np.hstack([c21, c22])])
vsplit hstack et tables hsplit vstack semblent être faits à cette fin
Questions connexes
- 1. Comment transformer des blocs en une matrice blockdiagonale (NumPy)
- 2. Diviser l'image en blocs
- 3. Comment diviser une matrice en parties égales?
- 4. Comment tronquer la matrice en utilisant NumPy (Python)
- 5. Comment diviser un tableau selon une condition en numpy?
- 6. Python: Numpy Matrice divisée
- 7. diviser l'image en 3 * 3 blocs
- 8. Diviser une image binaire en 'blocs' de données pixel
- 9. Comment diviser App.Router en plusieurs blocs indépendants?
- 10. Réduire une matrice clairsemée en numpy
- 11. Comment diviser une matrice multidimensionnelle en une matrice dimensionnelle unique en Java?
- 12. convertir chaîne numpy tableau en une matrice ascii numpy
- 13. Combiner la matrice en numpy
- 14. Somme une matrice le long d'un axe en utilisant un vecteur de poids en utilisant numpy
- 15. Comment convertir une matrice ND numpy en une matrice CFFI C++ et revenir en arrière?
- 16. Diviser la matrice en colonnes
- 17. comment diviser l'image en blocs 8x8 et 32x32 en matlab
- 18. augment une matrice dans NumPy
- 19. Comment convertir une vue de tableau numpy en matrice opencv?
- 20. Comment faire pour vider une matrice booléenne en numpy?
- 21. en utilisant numpy pour réduire la taille de la matrice
- 22. multiplication de matrice numpy
- 23. Comment imprimer une matrice en utilisant Python
- 24. Calcul de la matrice d'affinité en utilisant Numpy
- 25. 2 matrice et matrice 2 Multipliant en python en utilisant scipy/numpy
- 26. Diviser la div en blocs carrés
- 27. Numpy: Transformer la matrice clairsemée en ndarray
- 28. Comment diviser une matrice en sous-matrices de taille inégale?
- 29. Comment créer une sous-matrice dans numpy
- 30. Convertir une matrice numpy en un tableau python