Machen Sie eine Matrix Quadrat und padding es mit dem gewünschten Wert in numpy

Im allgemeinen könnten wir Matrizen beliebiger Größen haben. Für meine Anwendung ist es notwendig, quadratische Matrix zu haben. Auch die Dummy-Einträge sollten einen bestimmten Wert haben. Ich frage mich, ob es irgendwie in numpy gebaut?

Oder die einfachste Art, es zu tun

EDIT:

Die Matrix X ist schon da und es ist nicht quadriert. Wir wollen den Wert platzieren, um ihn quadratisch zu machen. Padiere es mit dem Dummy-Wert. Alle ursprünglichen Werte bleiben gleich.

Danke vielmals

2 Solutions collect form web for “Machen Sie eine Matrix Quadrat und padding es mit dem gewünschten Wert in numpy”

Seit Numpy 1.7 gibt es die numpy.pad Funktion. Hier ist ein Beispiel:

 >>> x = np.random.rand(2,3) >>> np.pad(x, ((0,1), (0,0)), mode='constant', constant_values=42) array([[ 0.20687158, 0.21241617, 0.91913572], [ 0.35815412, 0.08503839, 0.51852029], [ 42. , 42. , 42. ]]) 

Für ein 2D-Numpy-Array m es einfach, dies zu tun, indem man ein max(m.shape) x max(m.shape) Array von p und dieses mit dem gewünschten Padding-Wert multipliziert, bevor man die Scheibe von p entsprechend m ( p[0:m.shape[0], 0:m.shape[1]] ) gleich m .

Dies führt zu der folgenden Funktion, wobei die erste Zeile die Möglichkeit beinhaltet, dass die Eingabe nur eine Dimension hat (dh ein Array statt einer Matrix):

 import numpy as np def pad_to_square(a, pad_value=0): m = a.reshape((a.shape[0], -1)) padded = pad_value * np.ones(2 * [max(m.shape)], dtype=m.dtype) padded[0:m.shape[0], 0:m.shape[1]] = m return padded 

So zum Beispiel:

 >>> r1 = np.random.rand(3, 5) >>> r1 array([[ 0.85950957, 0.92468279, 0.93643261, 0.82723889, 0.54501699], [ 0.05921614, 0.94946809, 0.26500925, 0.02287463, 0.04511802], [ 0.99647148, 0.6926722 , 0.70148198, 0.39861487, 0.86772468]]) >>> pad_to_square(r1, 3) array([[ 0.85950957, 0.92468279, 0.93643261, 0.82723889, 0.54501699], [ 0.05921614, 0.94946809, 0.26500925, 0.02287463, 0.04511802], [ 0.99647148, 0.6926722 , 0.70148198, 0.39861487, 0.86772468], [ 3. , 3. , 3. , 3. , 3. ], [ 3. , 3. , 3. , 3. , 3. ]]) 

oder

 >>> r2=np.random.rand(4) >>> r2 array([ 0.10307689, 0.83912888, 0.13105124, 0.09897586]) >>> pad_to_square(r2, 0) array([[ 0.10307689, 0. , 0. , 0. ], [ 0.83912888, 0. , 0. , 0. ], [ 0.13105124, 0. , 0. , 0. ], [ 0.09897586, 0. , 0. , 0. ]]) 

etc.

  • Python: Wie vermeide ich numpy RuntimeWarning in der Funktionsdefinition?
  • Aufruf von Python-Funktionen von * .py-Dateien aus Java und Weitergabe und Rückgabe
  • Erstellen Sie Numpy Array ohne Aufzählung Array
  • Matrix-Betrieb mit numpy Pandas
  • So erstellen Sie Identitätsmatrix mit numpy
  • Numpy: Wie kann man einen Dataset (Array) in Trainings- und Test-Datasets aufteilen, z. B. Cross-Validierung?
  • Numpy durchschnittliche Funktion Rundung Fehler
  • Lesen Sie die flache Liste in multidimensionale Array / Matrix in Python
  • Strategie zur Isolierung von 3D-Datenpunkten
  • Ersatz für numpy broadcasting mit scipy.sparse.csc_matrix
  • Schnellste Weg, um Wörterbuch von Summen in numpy in 1 I / O Pass zu extrahieren
  • Python ist die beste Programmiersprache der Welt.