ValueError: не удалось преобразовать строку в float: файл матрицы - PullRequest
0 голосов
/ 12 марта 2019

Gretings У меня есть файл matrix.txt со следующей матрицей 3x3 dtype float32

----------------- matrix.txt ------------

[[ 2.94795074e+00  3.15288849e-02 -8.67170450e+02]
 [-2.21123258e-17  2.94877180e+00 -5.95651904e+02]
 [ 1.49601560e-04  1.52843706e-04  1.00000000e+00]]

p_homo = np.array([[1], [1], [1]])    
file = open('matrix.txt', 'r')
matrix_file_l =list()
matrix_file_l = file.read()
matrix_file = np.array(matrix_file_l,  dtype="float32")

def mult_matrix(matrix1, matrix2):
    matrixx = np.empty([len(matrix1), len(matrix2[0])])
    for i in range(len(matrix1)):
        for j in range(len(matrix2[0])):
            for k in range(len(matrix2)):
                matrixx[i][j] += matrix1[i][k] * matrix2[k][j]
    return matrixx

matrix = mult_matrix(matrix_file, p_homo)

matrix_file - строка, и я не могу преобразовать ее в float32. Я пытаюсь разыграть во многих отношениях

matrix_file = np.array(matrix_file_l,  dtype="float32")
ValueError: could not convert string to float: '[[-5.62093010e+01... 

1 Ответ

0 голосов
/ 13 марта 2019

Это работает для меня ... Я использую numpy np.save и np.load вместо файлов file = open('matrix.txt', 'w') file.write(matrix) matrix_value = file.read(), чтобы сохранить мою матрицу в matrix.npy, после этого было легко выполнить операцию, потому что numpy сохраняет значения как numpy.ndarray не как строки ....

--------------- script1 ------------------

...

np.save('matrix', matrix_value)

...

---------- script2 ---------------

p_homo = np.array([[1], [1], [1]])    
a= np.load('matrix.npy')

...

matrix = mult_matrix(a, p_homo)
...