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
и помещает его в списке и"Х" и как целые числа. Список и"Х" и затем преобразуется в массив "А". Собственные значения "А" находятся в "Л" и собственные векторы находятся в "в себе". Затем я хочу взять ехр(A) и поместите его в другой массив, что "показатель" по. Затем я создаю матрицу идентичности любой длины на "Л" это и называем матрица на "Л" по. Мой цикл, предполагают, чтобы взять ценности на "показатель" и заменить 1'ы по диагонали единичная матрица, но я получаю сообщение об ошибке, говорящее, что "неверный индекс к скалярной переменной и". Что не так с моим кодом?
экспонента
- это массив 1Д. Это означает, что экспоненты[0]- скаляр, и экспоненты[0][Я]
пытается получить доступ к нему, как будто это массив.
Вы хотели сказать:
L = identity(len(l))
for i in xrange(len(l)):
L[i][i] = exponent[i]
или даже
L = diag(exponent)
?
IndexError: недопустимый индекс к скалярной переменной
происходит, когда вы пытаетесь индексировать включает в себя
скаляр, такие как и NumPy.типа int64
или и NumPy.float64
. Он очень похож на ошибку TypeError: 'инт' объект не имеет атрибут '__метод 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__'