Matrixspalten Permutation Python
Wanderung
Ich versuche, eine Lösung zu finden, um alle Spaltenpermutationen einer Matrix zu finden. Also habe ich diesen Code geschrieben, aber er funktioniert nicht.
Gelöst:
#! python
import numpy
def permutation(matrix):
if numpy.size(matrix,1) == 1:
return [matrix]
#empty list
m=[]
# Iterate the input(matrix) and calculate the permutation
for i in range(numpy.size(matrix,1)):
column = matrix[:,[i]]
# Extract column[i] or m from the matrix. remMatrix is the remaining matrix
remMatrix = numpy.concatenate((matrix[:,:i], matrix[:,i+1:]), axis=1)
# Generating all permutations where m is the first element
for p in permutation(remMatrix):
m.append(numpy.concatenate([column,p],axis=1))
return m
#driver to test the function
matrix=numpy.matrix('1 2 3; 0 0 0')
for p in permutation(matrix):
print(p)
Martin
Sie haben den Basisfall in Ihrer Rekursion nicht behandelt. Wenn Sie eine Matrix mit einer einzelnen Spalte übergeben, wird permutation
eine leere Matrix zurückgegeben. Das liegt daran, dass die Zeile m = numpy.concatenate((column,p),axis=1)
nicht erreicht wird, wenn sie remMatrix
leer ist.
Als Ergebnis m
ist ein leeres Array, wenn Sie es zurückgeben und die print
Anweisung nicht aufgerufen wird.
Ich verstehe auch nicht ganz, was du vorhast. Würde es für die meisten Matrizen nicht mehrere Spaltenpermutationen geben? Wollen Sie, dass all diese Matrizen am Ende verkettet sind?