У меня проблема с загрузкой матрицы из текстового файла в Python.У меня есть текстовый файл с матрицами, которые выглядят так:
Matrix # 1[6 x 8]
[[0.0322202 0.09434484 0.25002295 0.2528428 0.10415784 0.24142196
0.010517 0.25487851]
[0.18335361 0.1277445 0.06118253 0.18690019 0.20396079 0.28628478
0.23368012 0.07932863]
[0.01586491 0.08351546 0.09179019 0.19086502 0.26448857 0.00341661
0.0076354 0.14970549]
[0.05323177 0.01803223 0.26651485 0.249316 0.00885857 0.28183164
0.06242965 0.10416661]
[0.05393575 0.2685312 0.0928845 0.0165103 0.19793575 0.18197242
0.10990779 0.11711208]
[0.11764279 0.23854231 0.14737164 0.15334971 0.26638431 0.04492217
0.12121334 0.0157779 ]]
-------------------------
Matrix # 2[8 x 8]
[[0.03673123 0.04280058 0.13064546 0.0483846 0.06306662 0.04791767
0.20136789 0.06709436]
[0.00859638 0.2915551 0.1329647 0.00975984 0.12029034 0.2637118
0.12587069 0.11391991]
[0.05633049 0.08800232 0.03203959 0.02466364 0.10011332 0.15201659
0.22264326 0.0558971 ]
[0.05053821 0.04099701 0.27159803 0.08778437 0.20792823 0.2030534
0.25036928 0.16582882]
[0.16867485 0.03230341 0.19495864 0.10821256 0.12185273 0.05480103
0.22728856 0.25456569]
[0.02218817 0.23359441 0.15457978 0.0275037 0.06745245 0.12328887
0.16972525 0.02161821]
[0.28029231 0.16327778 0.27735648 0.20591421 0.21236012 0.17597595
0.20992926 0.01747133]
[0.10150612 0.22284606 0.11146442 0.18066627 0.12760146 0.10264632
0.24329665 0.26529221]]
-------------------------
Matrix # 3[8 x 5]
[[0.0044761 0.26838514 0.22510378 0.22843132 0.07689473]
[0.16908802 0.15970796 0.25875775 0.04569838 0.04147033]
[0.08524995 0.04703752 0.05619528 0.14943606 0.24411115]
[0.0667661 0.13352421 0.19563742 0.11554089 0.10493734]
[0.14797975 0.06908592 0.06823431 0.04430664 0.09185596]
[0.02574791 0.0367757 0.23516482 0.1551992 0.27722899]
[0.14542998 0.01641985 0.24688273 0.21755754 0.09459343]
[0.26374249 0.12827675 0.1170908 0.004356 0.08593468]]
-------------------------
и тысяча подобных матриц.
Я написал код Python, который выглядит следующим образом:
import csv
matrices = []
if __name__ == "__main__":
with open('matrices-2-2.txt', 'r') as file:
matrix_reader = csv.reader(file, delimiter =" ")
current_matrix = [];
for row in matrix_reader:
if row == "-------------------------":
matrices.append(current_matrix)
current_matrix = []
elif row == "Matrix":
self()
else:
current_matrix.append(list(map(float, row)))
print(matrices)
Мне удалось загрузить матрицы.На данный момент, к сожалению, у меня возникла проблема при попытке их умножить.Я создал следующий код:
import multiprocessing
from multiprocessing import Pool
from time import time
import numpy
import re
def matrix_multiplication(list1, list2):
A = numpy.matrix(list1)
B = numpy.matrix(list2)
return A * B
def counting(dane):
left_matrix = matrices[0]
for matrix in matrices[1:]:
left_matrix = numpy.matrix(left_matrix)
matrix = numpy.matrix(matrix)
left_matrix = matrix_multiplication(left_matrix, matrix)
if __name__ == "__main__":
matrices = []
start = time()
with open('matrices-2-2.txt', 'r') as file:
content = file.read()
# gets each matrix based on the pattern [[ ]]
matrices_string = re.findall("\[([\d\s.\n\]\[]+)\]", content)
# loops over each matrix
for matrix_string in matrices_string:
# parses each row of the matrix
matrix_rows = re.findall("\[([\d\s.\n\]]+)\]", matrix_string)
# gets all the numbers for each row of the matrix and remakes the matrix as a list of floats
matrices.append([list(map(float, re.findall("\d+\.\d+", row))) for row in matrix_rows])
print('Load Matrices')
np = multiprocessing.cpu_count()
print('You have', np, 'processors')
counting(matrices)
stop = time()
print('The Calculation took ', stop - start, 'seconds')
matrices2 = numpy.array_split(matrices, np)
start = time()
pool = Pool(processes=np)
count = pool.map(counting, matrices2)
stop = time()
print("Parallel Calculation took ", stop - start, 'seconds')
Компилятор отображает следующие ошибки:
Файл "/.../Matrix1.py", строка 45, в файле подсчета (матрицы) "/.../Matrix1.py ", строка 21, при подсчете left_matrix = matrix_multiplication (left_matrix, matrix) Файл" /.../Matrix1.py ", строка 12, в файле matrix_multiplication return (A * B)" / Библиотека/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/numpy/matrixlib/defmatrix.py ", строка 343, в mul возвращает N.dot (self, asmatrix (other)) ValueError: формы (6,6) и (5,6) не выровнены: 6 (dim 1)! = 5 (dim 0) Помогите, я бы хотел, чтобы этот алгоритм работал правильно.