Есть графический интерфейс для просмотра содержимого .npy файла? - PullRequest
0 голосов
/ 14 сентября 2018

Я работаю с Python 2.

Я сохранил dict из arrays в .npy файл на моем компьютере.Если я открою его как текстовый файл, я просто вижу беспорядок в ASCII-символах, как и следовало ожидать, поскольку я не просто сохраняю массивы.

Я могу видеть его содержимое по np.load это в консоли Python, но мне было интересно, есть ли графический интерфейс, который позволяет мне видеть содержимое файла напрямую, т.е. не проходя через консоль Python?

В основном: если я вернулся, ясохранил бы его как json или hdf5 файл, чтобы я мог открыть их с помощью некоторого средства просмотра и мог ясно видеть данные.
Если не сделал это и сохранил .npy файлы, могу ли я увидеть его содержимое аналогичным образом, если это были файлы json или hdf5?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

np.load (или клон) - единственная причина для загрузки npy:

In [84]: adict = {'a':np.arange(3), 'b':np.ones((2,3),int)}
In [85]: np.save('foo.npy',adict)
In [86]: np.load('foo.npy')
Out[86]: 
array({'a': array([0, 1, 2]), 'b': array([[1, 1, 1],
       [1, 1, 1]])}, dtype=object)

Обратите внимание, что словарь был заключен в массив dtype объекта 0d.Структура словаря была тогда pickled.И массивы со словарем были засолены в формате np.save.И словарь, и объектный массив dtype могут содержать указатели на другие объекты Python, которые нуждаются в собственном методе выбора.Другими словами, это Python до самого конца!.

Если бы вы попытались использовать json, вы бы обнаружили, что массивы numpy не сериализуемы в json.Вам бы пришлось применить tolist(), чтобы превратить массивы в списки.json просто сохраняет словари, списки и строки (базовые структуры javascript, которые разделяют многие языки).Также может быть сторонний сериализатор для numy массивов.

h5 написан на C ++, с большим количеством языковых интерфейсов.h5dump удобный просмотрщик.Но чтобы написать словарь из вашего Python-словаря, вам придется использовать h5py (или pytables).Словарь хорошо отображает группы h5, а массивы - наборы данных h5.

0 голосов
/ 14 сентября 2018

В настоящее время нет графического интерфейса, способного считывать содержимое .npy в виде простого текста.Однако, если вы считаете, что такая программа будет полезна для сообщества, вы можете легко создать такой инструмент.

Давайте рассмотрим несколько способов, с помощью которых вышеупомянутый инструмент может работать:

  1. Просто выведите результаты np.load в файл, используя консольную команду:

    $ python your_program.py > file.txt

    Перенаправляет вывод консоли с your_program.py на file.txt.

  2. Используйте функцию contextlib.redirect_stdout() для вывода только соответствующих данных из stdout в file.txt.

Примерно так:

from contextlib import redirect_stdout
    with open("help.txt", "w") as f:
         with redirect_stdout(f):
             print('it now prints to 'help.text')
...