4

我有两个矩阵

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*Nijfi 是列矩阵,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' object does not support item assignment

为什么?我该如何解决这个问题?

4

1 回答 1

8

你的问题就在这里:

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

您命名了一个变量Xij,但也命名了一个函数。此外,当您命名该函数时,它会覆盖该变量。

因此,当您尝试索引函数并分配其项目时,会生成错误,因为您无法对函数执行此操作。下面是一个例子:

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

这个错误看起来很熟悉吗?它与您生成的相同,因为我完全按照您所做的那样做。

要解决此问题,请将您的函数名称更改为Xij. 这样做将使Xij矩阵相等,这将支持索引和项目分配。

于 2013-08-14T14:33:48.630 回答