#python #numpy #matrix
#python #numpy #матрица
Вопрос:
Я новичок в Python. У меня есть файл ascii (6000 КБ) матричного типа, и я хотел бы импортировать его в numpy, сохранив ту же форму, то есть имея numpy-матрицу. Я делаю это, используя приведенный ниже код. Выполняемый код выдает матрицу (1456L, 2048L), но для загрузки одного файла требуется 20 секунд. Как я могу ускорить это?
Заранее благодарю вас
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
def load_matrix_from_file(f):
import types
if type(f) == types.StringType:
fo = open(f, 'r')
matrix = load_matrix_from_file(fo)
fo.close()
return matrix
elif type(f) == types.FileType:
file_content = f.read().strip()
file_content = file_content.replace('rn', ';')
file_content = file_content.replace('n', ';')
file_content = file_content.replace('r', ';')
return np.matrix(file_content)
raise TypeError('f must be a file object or a file name.')
data3 = load_matrix_from_file('file_name.asc')
Комментарии:
1. Дело в том, что вы не загружаете матрицу в numpy, вы загружаете ее в python, а затем преобразуете ее в numpy-матрицу. Вы смотрели на numpy.loadtxt?
2. Большое спасибо! Он работает намного быстрее с numpy.loadtxt рядом с ним находится файл ascii.
3. я бы сохранил как двоичный файл с помощью
np.save
и использовалnp.load
с этого момента.4. @talonmies вы могли бы опубликовать свой комментарий в качестве ответа…