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 permutationeine leere Matrix zurückgegeben. Das liegt daran, dass die Zeile m = numpy.concatenate((column,p),axis=1)nicht erreicht wird, wenn sie remMatrixleer ist.

Als Ergebnis mist ein leeres Array, wenn Sie es zurückgeben und die printAnweisung 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?

Verwandte Artikel


Zyklische Zuweisung von Python-Matrixspalten

Johannes Stein Ich habe eine Matrix $X=(X_{ij})\in R^{n\times d}$ und einen Vektor $y=(y_i)\in R^{n}$ und ich möchte $y$ und zentralisieren $X$ in Spalten zentralisieren und normalisieren, dh $\sum_{i=1}^{n} y_i=0$, $\sum_{i=1}^{n} X_{ij}=0$ 和 $\ sum_{i=1}^{n}

Sortieren von Matrixspalten basierend auf Listenwerten mit Python

erik Ich habe eine N x 100 numpyMatrix, die alle Arten von Zahlen enthält, die ich sortieren möchte. Damit es visueller wird, fülle ich es jetzt mit Dummy-Werten aus: import numpy as np X = np.array( [[float(number) for number in range(100)] for _ in range(10

So geben Sie Matrixspalten als Listen in Python zurück

lila Angenommen ich habe folgende Matrix: matrix = [[1,2,3], [4,5,6], [7,8,9]] Wie erstelle ich eine Funktion, die die Spalten als Listen zurückgibt, wie in der Liste unten gezeigt, ohne Verknüpfungen zu verwenden? Danke im Voraus. new_m

Python, Permutation zur Permuationsindexfunktion

Fadedbee Ich habe einige Permutationen einer Liste: >>> import itertools >>> perms = list(itertools.permutations([0,1,2,3])) >>> perms [(0, 1, 2, 3), (0, 1, 3, 2), (0, 2, 1, 3), (0, 2, 3, 1), (0, 3, 1, 2), (0, 3, 2, 1), (1, 0, 2, 3), (1, 0, 3, 2), (1, 2, 0, 3)

Permutation und Kombination in Python

Python Hat Python eine eingebaute Funktion, mit der ich eine Sequenz wie diese generieren kann? Für i = 5, wie viele verschiedene Arten 0 und 1 können fünf Stellen besetzen wie 00000 00001 00010 00011 00100 . . . . 11111 für i = 6, wie viele Wege 0 und 1 könn

Python 3, Permutation, Kombination

Baller Mein Problem ist: Schreiben Sie einen Code, der alle möglichen Kombinationen für x, y, z so ausgibt, dass sie dem Eingabewert der Gesamtsumme entsprechen. x,y,z = integer:: x*500 + y*300 + z*400 = total sum aber es wurden nicht alle möglichen Antworten

Python Effizientere Permutation

Dan7nm Ich habe eine Zeichenfolge, die aus x Menge des Buchstabens 'r' und y Menge von 'u' besteht. Und mein Ziel ist es, alle möglichen Kombinationen derselben Menge x,y mit unterschiedlichen Reihenfolgen zu drucken. Dies ist mein Beispiel für einen funktioni

Matrixspalten mit CUDA extrahieren?

Hieu Pham Mit habe nvprofich herausgefunden, dass der folgende Kernel der Engpass meiner CUDA-Anwendung ist __global__ void extractColumn_kernel(real_t *tgt, real_t *src, int *indices, int numRows, int len) { int stride = gridDim.x * blockDim.x; int tid =