Загрузка файла ascii типа матрицы в numpy, очень медленно

#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 вы могли бы опубликовать свой комментарий в качестве ответа…