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 2
3 4
を含むテキストファイルを開き、それを整数としてリスト "x" に配置します。そして、リスト "x" は配列 "a" に変換されます。quot;a"の固有値は"l"に、固有ベクトルは"v"に配置される。次に、exp(a)を別の配列quot;exponent"に配置したいと思います。そして、長さが何であろうと同一行列を作り、その行列を "L" と呼びます。私のforループは、quot;exponent"の値を取り、単位行列の対角線上の1'を置き換えることになっていますが、「スカラー変数への無効なインデックス」というエラーが発生しました。私のコードに何か問題があるのでしょうか?
numpy.int64
や numpy.float64
などの numpy
のスカラー変数にインデックスを付けようとすると IndexError: invalid index to scalar variable
が発生します。これは int
をインデックスしようとしたときに起こる TypeError: 'int' object has no attribute '__getitem__'
とよく似ている。
>>> 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__'