Todas las combinaciones de una matriz 2D de numpy rellenada con 0s y 1s.
Dado K, necesito tener todas las posibles combinaciones de matrices numpy de K x 2 para que en cada matriz haya todo 0, excepto dos 1 en filas y columnas diferentes.
Algo así para K = 5:
- [[1,0],[0,1],[0,0],[0,0][0,0]]
- [[1,0],[0,0],[0,1],[0,0][0,0]]
- [[1,0],[0,0],[0,0],[0,1][0,0]]
- [[1,0],[0,0],[0,0],[0,0][0,1]]
- [[0,0],[1,0],[0,1],[0,0][0,0]]
- [[0,0],[1,0],[0,0],[0,1][0,0]]
- … y así sucesivamente
Entonces, el array resultante debería ser de tamaño K x 2 x (K*(K-1)/2).
Quiero evitar los bucles ya que no es una forma eficiente cuando K es lo suficientemente grande (en mi caso específico K = 300)
davy.ai
Para generar todas las posibles combinaciones de matrices numpy K x 2 con dos unos en filas y columnas diferentes, podemos utilizar la función
combinations
del móduloitertools
para generar todos los posibles pares de filas y luego crear una matriz con dos unos en estas filas y ceros en otros lugares.Aquí tienes un ejemplo de código:
Esto dará como resultado:
Esta matriz tiene una forma de
(K, 2, K*(K-1)/2)
, como se solicita. Ten en cuenta que para valores grandes de K, el array resultante será bastante grande, por lo que puede que desees guardarlo en disco en lugar de mantenerlo en memoria.