“TypeError: el objeto ‘function’ no admite la asignación de elementos”

Tengo dos matrices

fi = [[f1], Nij = [[N11 N12 .......N1n], [f2], [N21 N22 .......N2n], . ... . ... [fn]] [Nn1 Nn2 .......Nnn]] 

Quiero multiplicar

 f1 to each element of the 1st row, f2 to each element of the 2nd row, 

y así.

Es decir, quiero Xij = fi*Nij donde fi es una matriz de columnas y Xij & Nij es nxn matrix.

Traté de usar

 import numpy as np fi = np.linspace(1,5, num =5) fi = np.asmatrix(fi) def Xij(ai): Nij = np.ones((5,5)) for i in range(len(fi)): for j in range(len(fi)): Xij[i,j] = ai[i] * Nij[i,j] return Xij Zij = Xij(fi) 

Me da este error TypeError: 'function' object does not support item assignment

¿Por qué? y como resuelvo esto?

Su problema está aquí:

 Xij[i,j] = ai[i] * Nij[i,j] 

Usted nombró una variable Xij , pero también una función. Además, cuando nombraste la función, sobrescribió la variable.

Debido a esto, cuando intenta indexar la función y asignar sus elementos, se genera un error porque no puede hacerlo en la función. A continuación se muestra un ejemplo:

 >>> def test(): print "Hi" ... >>> test[1] = "yo!" Traceback (most recent call last): File "", line 1, in  TypeError: 'function' object does not support item assignment >>> 

¿Te parece familiar ese error? Es el mismo que generaste porque hice exactamente lo que hiciste.

Para solucionar este problema, cambie el nombre de su función a algo que no sea Xij . Si lo hace, Xij será igual a la matrice, que admitirá la indexación y la asignación de elementos.