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

exponent1D配列です。これは、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.int64numpy.float64TypeError: '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 に答える