36
import numpy as np

with open('matrix.txt', 'r') as f:
    x = []
    for line in f:
        x.append(map(int, line.split()))
f.close()

a = array(x)

l, v = eig(a)

exponent = array(exp(l))

L = identity(len(l))

for i in xrange(len(l)):
    L[i][i] = exponent[0][i]

print L
  1. 我的代码打开一个包含矩阵的文本文件:
    1 2
    3 4
    并将其x作为整数放入列表中。

  2. 然后将列表x转换为数组a

  3. 的特征值a放在 中l,特征向量放在 中v

  4. 然后我想把 exp(a) 放在另一个数组exponent中。

  5. L然后我创建一个任意长度的单位矩阵l

  6. 我的 for 循环应该在单位矩阵的对角线上取值exponent并替换 1,但我收到错误消息

    invalid index to scalar variable.

我的代码有什么问题?

4

3 回答 3

31

exponent是一维数组。这意味着这exponent[0]是一个标量,并且exponent[0][i]正试图像访问数组一样访问它。

你的意思是说:

L = identity(len(l))
for i in xrange(len(l)):
    L[i][i] = exponent[i]

甚至

L = diag(exponent)

?

于 2012-11-27T22:45:58.990 回答
9

IndexError: invalid index to scalar variable当您尝试索引numpy标量时会发生numpy.int64or numpy.float64。这与TypeError: 'int' object has no attribute '__getitem__'您尝试索引int.

>>> a = np.int64(5)
>>> type(a)
<type 'numpy.int64'>
>>> a[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: invalid index to scalar variable.
>>> a = 5
>>> type(a)
<type 'int'>
>>> a[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object has no attribute '__getitem__'
于 2013-09-19T20:36:37.770 回答
1

就我而言,我收到此错误是因为我有一个名为的输入x,并且我正在创建(没有意识到)一个名为x. 我以为我正在尝试访问输入的一个元素x(这是一个数组),而我实际上是在尝试访问局部变量的一个元素x(这是一个标量)。

于 2020-04-07T19:46:56.520 回答