Ho una funzione che dovrebbe acquisire una matrice 1D di numeri interi e la forma in una matrice 2D di array 1x3. Quindi si suppone che prenda ciascun array 1x3 e lo sposti in un array 3x1. Il risultato dovrebbe essere un array 2D di array 3x1. Qui è la mia funzioneImpossibile rimodellare l'array numpy
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
Il problema sorge quando si tenta di cambiare le matrici 1x3 per le matrici 3x1. Ottengo il seguente output assumendo rgbValues = [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)
Come posso evitare questo errore?
Quando si dice matrice 2D di array 1x3, è di forma (n, n, 1, 3)? Un esempio qui potrebbe aiutare a chiarire! –
Il problema principale è che ogni voce di 'lmsValues' ha già una forma specificata, quindi non è consentito assegnare qualcosa a questa con una forma diversa. Sono d'accordo con @AndyHayden, tuttavia, che un semplice esempio del tuo input e l'output atteso saranno utili per rispondere alla tua domanda. – cm2
Modificato, ora dovrebbe essere più chiaro –