我有两个矩阵
fi = [[f1], Nij = [[N11 N12 .......N1n],
[f2], [N21 N22 .......N2n],
. ...
. ...
[fn]] [Nn1 Nn2 .......Nnn]]
我想成倍增加:
f1 to each element of the 1st row,
f2 to each element of the 2nd row,
等等.
即我想要Xij = fi * Nij,其中fi是列矩阵,Xij& Nij是nxn矩阵.
我试过用
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)
它给了我这个错误TypeError:’function’对象不支持项目赋值
为什么?我该如何解决这个问题?
解决方法:
你的问题就在这里:
Xij[i,j] = ai[i] * Nij[i,j]
你命名了一个变量Xij,但也是一个函数.此外,当您命名该函数时,它会覆盖该变量.
因此,当您尝试索引函数并分配其项时,会生成错误,因为您无法对该函数执行此操作.以下是一个例子:
>>> def test(): print "Hi"
...
>>> test[1] = "yo!"
Traceback (most recent call last):
File "", line 1, in
TypeError: 'function' object does not support item assignment
>>>
这个错误看起来很熟悉吗?它与你生成的是同一个,因为我完全按照你的方式做了.
要解决此问题,请将您的函数名称更改为Xij以外的名称.这样做会使Xij等于matrice,这将支持索引和项目分配.
标签:python,iteration,typeerror
来源: https://codeday.me/bug/20190624/1282842.html
在尝试将函数`Xij`用于矩阵乘法时遇到了'TypeError: 'function' object does not support item assignment'的错误。问题在于函数名`Xij`与期望赋值的矩阵变量冲突。为解决此问题,需要更改函数名以避免覆盖矩阵变量。
31万+

被折叠的 条评论
为什么被折叠?



