2012-08-08 9 views
19

Im utilizando python 2.7 y estoy intentando un forcasting en algunos datos aleatorios de 1.00000000 a 3.0000000008. Hay aproximadamente 196 artículos en mi matriz y me sale el errorNumpy `ValueError: los operandos no se pudieron transmitir junto con la forma ...`

ValueError: operands could not be broadcast together with shape (2) (50) 

no parecen ser capaces de resolver este problema por mi cuenta. Cualquier ayuda o enlace a la documentación relevante sería muy apreciada.

Aquí está el código que estoy usando que genera este error

nsample = 50 
sig = 0.25 
x1 = np.linspace(0,20, nsample) 
X = np.c_[x1, np.sin(x1), (x1-5)**2, np.ones(nsample)] 
beta = masterAverageList 
y_true = ((X, beta)) 
y = y_true + sig * np.random.normal(size=nsample) 

Respuesta

17

Si X y beta no tienen la misma forma que el segundo término en el rhs de su última línea (es decir nsample), entonces obtendrá este tipo de error Para agregar una matriz a una tupla de matrices, todas deben tener la misma forma.

Recomendaría mirar el numpy broadcasting rules.

+0

Mi error si cambia algo en mi matriz hay 168 elementos, la forma es actualmente (1, 168) (168, 4). ¿Quiere decir que la forma de ambos debería ser idéntica (1, 168) (1, 168)? –

+0

Vaya, edité mi código antes de publicarlo. Pero lo cambié de nuevo a cómo era la forma en realidad (1.168) (50,4). A ¿Debo hacer que sean ambos (1,168) (1,168) o (50,4) (50,4)? –

+0

Realmente no puedo responder el tamaño de tus matrices. Simplemente tienen que ser iguales para agregarlos de la manera en que lo intentas. – JoshAdel

Cuestiones relacionadas