Матрицы умножения получают неверный тип данных для einsum - PullRequest
0 голосов
/ 05 декабря 2018

Я импортирую данные из CSV и пытаюсь выполнить анализ, но мне нужно умножить матрицу на ее транспонирование.

def C_matrices(F11_list, F12_list, F21_list, F22_list):
    C11_list = []
    C12_list = []
    C21_list = []
    C22_list = []
    for F11 in F11_list:
        pos = F11_list.index(F11)
        F = np.array([[float(F11), F12_list[pos]], [F21_list[pos], F22_list[pos]]])
        print F
        Ft = F.transpose()
        print Ft
        C = np.matmul(F, Ft)
        C11_list.append(C[:1, :1])
        C12_list.append(C[1:, 2:])
        print C[:1, :1]
        print C[1:, 2:]
        break

И я получаю:

[['1.0' '0']
Traceback (most recent call last):
['0' '1']]
File "C:/Users/lukec/Desktop/School/3rd Year/1st Quarter/BENG 110/Project/read_F.py", line 48, in <module>
[['1.0' '0']
control()
['0' '1']]
File "C:/Users/lukec/Desktop/School/3rd Year/1st Quarter/BENG 110/Project/read_F.py", line 45, in control
C_matrices(F11_list, F12_list, F21_list, F22_list)
File "C:/Users/lukec/Desktop/School/3rd Year/1st Quarter/BENG 110/Project/read_F.py", line 34, in C_matrices
    C = np.matmul(F, Ft)
TypeError: invalid data type for einsum

Я не уверен, почему einsum не работает, я получаю матрицу 2x2, умноженную на матрицу 2x2.Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 05 декабря 2018

Из выходных данных видно, что элементы массива не числа, а строки

[['1.0' '0']

Перед работой

обязательно приведите компоненты к числам float(foo)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...