np.load () в цикле for - PullRequest
       0

np.load () в цикле for

0 голосов
/ 03 марта 2020

У меня есть набор массивов, сохраненных в виде файлов .npy, и здесь я пытаюсь прочитать их все и добавить в список для объединения. Проблема в том, что, когда я пытаюсь сделать это внутри для l oop, я получаю «не могу преобразовать массив размера 0 в форму (585,1386)», но когда я загружаю их один за другим, они читаются очень хорошо ... Что т?

'' '

import numpy as np
import os

arr_list = []

for file in os.listdir('/Users/sjakober/Documents/ResearchSpring2020/geotiffs/'):
    if file.endswith(".npy"):
        arr = np.load(file)
        arr_list.append(arr)

' ''

1 Ответ

0 голосов
/ 09 марта 2020

Эта ошибка возникает, когда файл .npy поврежден, возможно, обрезан. Существует несоответствие между формой, определенной в заголовке файла, и фактическим объемом данных в файле. Об этом говорится в комментарии к этому вопросу .

Проблема в этом конкретном сценарии заключается в том, что os.listdir возвращает массив со всеми именами файлов внутри указанного пути, а не полным путем к каждому файлу. Таким образом, при попытке загрузить массив из переменной file он может пытаться загрузить поврежденный существующий файл в текущей папке, но не ожидаемый. Если файл не существует, numpy throws FileNotFoundError.

Это можно исправить с помощью os.path.join и объедините имя файла и полный путь, или с помощью glob:

import glob
...
for file in glob.glob("/Users/sjakober/Documents/ResearchSpring2020/geotiffs/*.npy"):
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...