Kann nicht Umformen numpy array

Ich habe eine Funktion, die angeblich ein 1D-array von Integer-zahlen und Formen in ein 2D-array von 1x3-arrays. Es dann angeblich jeder 1x3-array aus, und verschieben Sie Sie in einen 3x1-array. Das Ergebnis soll ein 2D-array von 3x1-arrays. Hier ist meine Funktion

def RGBtoLMS(rgbValues, rgbLength): #Method to convert from RGB to LMS
    print rgbValues
    lmsValues = rgbValues.reshape(-1, 3)
    print lmsValues
    for i in xrange(len(lmsValues)):
        lmsValues[i] = lmsValues[i].reshape(3, 1)

    return lmsValues

Sich das Problem erhebt sich, wenn ich versuche es zu ändern 1x3-arrays 3x1-arrays. Ich bekomme die folgende Ausgabe davon RGB-Werte = [14, 25, 19, 24, 25, 28, 58, 87, 43]

[14 25 19 ..., 58 87 43]
[[14 25 19]
 [24, 25, 28]
 [58 87 43]]

ValueError [on line lmsValues[i] = lmsValues[i].reshape(3, 1)]: could not broadcast input array from shape (3,1) into shape (3)

Wie kann ich diesen Fehler vermeiden?

  • Wenn du sagst 2D-array von 1x3-arrays, ist es von der Form (n, n, 1, 3) ? Ein Beispiel hier könnte helfen, zu klären!
  • Das Hauptproblem ist, dass jeder Eintrag von lmsValues hat eine festgelegte Form bereits, so ist die Zuordnung etwas zu, mit einer anderen Form ist nicht zulässig. Ich Stimme mit @AndyHayden , jedoch als ein einfaches Beispiel die Eingabe und erwartete Ausgabe wird hilfreich sein bei der Beantwortung Ihrer Frage.
  • Editiert, jetzt sollte es klarer sein
  • Ich denke, "2D-array von 1x3 Feldern" bedeutet "2D-array mit Form (n, 3)". @Nick, in numpy, ein array ist nur ein einzelnes Objekt, ob 1d-oder 2d-oder nd. Für Listen, sagen wir, "Liste der Listen", wenn es '2d', aber in numpy, das ist nur ein "2d-array'. Auch, wir wissen immer noch nicht, was das gewünschte Ergebnis aussieht.
InformationsquelleAutor Nick Gilbert | 2013-11-27
Schreibe einen Kommentar