Implementaré la multiplicación de matrices de Strassen utilizando python. En el paso de división, dividimos una matriz más grande en submatrices más pequeñas. ¿Hay una función numpy incorporada para dividir una matriz?¿Cómo dividir una matriz en 4 bloques usando numpy?
6
A
Respuesta
11
No exactamente, pero usando la notación de división en matriz, debería poder hacerlo usted mismo con bastante facilidad.
>>> 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.]])
Marca B del 2x2 superior izquierda en A:
>>> B = A[0:2,0:2]
Tenga en cuenta que B es una vista, que comparte datos con 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 es necesario copiar los datos desde A, use el método de copia:
>>> 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
Atrévete el mismo problema y ha encontrado algunas funciones incorporadas numpy dividir mi matriz en 4 submatrices (mis matrices son de tamaño 2^N * 2^N)
Aquí está el código que escribí:
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]
bono para combinarlos usando numpy:
C=np.vstack([np.hstack([c11, c12]), np.hstack([c21, c22])])
vsplit tablas hsplit hstack y vstack parecen estar hechas para ese propósito
Cuestiones relacionadas
- 1. ¿Cómo dividir una matriz según una condición en numpy?
- 2. Dividir una matriz en MATLAB
- 3. Ordenar una matriz numpy como una mesa
- 4. Cómo analizar una matriz numpy?
- 5. Usando Numpy stride_tricks para obtener bloques de matriz que no se superpongan
- 6. Rebanada de matriz NumPy usando Ninguno
- 7. Cómo imprimir una matriz Numpy sin corchetes?
- 8. Cómo dividir una cadena por varios caracteres en MSBuild 4?
- 9. Convertir una matriz 1D en una matriz 2D en numpy
- 10. Numpy: cómo dividir/seleccionar aleatoriamente una matriz en n matrices diferentes
- 11. ¿Cómo dividir una matriz en partes iguales?
- 12. Cómo dividir una matriz en Ruby
- 13. ¿Ver en una matriz numpy?
- 14. Dividir una matriz en algunos sub-arrays
- 15. Clasifique los elementos en una matriz usando Python/NumPy
- 16. "pintar" una matriz en otra usando python/numpy
- 17. ¿Cómo "insertar" una pequeña matriz numpy en un bloque predefinido de una matriz numpy grande?
- 18. ¿Cómo se filtra una matriz numpy usando los valores de otra matriz?
- 19. Cómo dividir una cadena en una matriz 2D con Regex?
- 20. ¿Cómo creo una matriz/matriz vacía en NumPy?
- 21. envolviendo una matriz numpy en python
- 22. Construir una matriz numpy enorme usando las tablas
- 23. ¿Cómo generar audio desde una matriz numpy?
- 24. ¿Cómo crear una matriz de registro numpy?
- 25. Scipy interpolación en una matriz de numpy
- 26. Cómo dividir una matriz de bytes
- 27. Convertir una matriz numpy 2D en una matriz estructurada
- 28. ¿Sumar de manera eficiente una matriz numpy pequeña, transmitida a través de una matriz numpy descomunal?
- 29. interactuando sobre una matriz numpy
- 30. Submuestreo/promediado sobre una matriz numpy