是否有 GUI 可以查看 .npy 文件的内容?
Posted
技术标签:
【中文标题】是否有 GUI 可以查看 .npy 文件的内容?【英文标题】:Is there a GUI to see contents of .npy file? 【发布时间】:2018-09-14 16:30:46 【问题描述】:我正在使用 Python 2。
我已将dict
或arrays
保存到我计算机上的.npy
文件中。如果我将它作为文本文件打开,只会看到一堆乱七八糟的 ASCII 字符,正如人们所期望的那样,因为我不是只是保存数组。
我可以在 Python 控制台中通过np.load
查看它的内容,但我想知道是否有一个 GUI 可以让我直接查看文件的内容,即无需通过 Python 控制台?
基本上:如果我回去,我会将其保存为json
或hdf5
文件,以便我可以用一些查看器打开它们并清楚地看到数据。 没有这样做,并保存了.npy
文件,如果它们是 json 或 hdf5,我能否以类似的方式查看其内容?
【问题讨论】:
.npy
格式是二进制数据格式,因此即使您的数组仅包含数字数据,它仍然会在文本编辑器中显示为垃圾值。如果您想以人类可读的格式保存数据,请使用np.savetxt
。
正在为您开发一个使用 PySimpleGUI 作为 GUI 的解决方案。已经有显示 CSV 和 panda 文件的演示,所以应该可以......也许......
一位贡献者完成了一个简单的 numpy 表查看器,但是,它使用 Python 3,并且您已明确声明您使用的是 Python 2,因此我不会将其发布为答案。如果您可以升级到 3,这可能是一个选项。如果您可以提供一个示例 numpy 文件,我们可以检查它是否在查看器中正确显示。
.npy文件的内容,当我以np.load(file)[()]
打开时为:0: [array([0])], 1: [array([1]), array([-1])], 2: [array([2]), array([-2])], 3: [array([3]), array([-3])], 4: [array([4]), array([-4])], 5: [array([5]), array([-5])], 6: [array([6]), array([-6])], 7: [array([7]), array([-7])], 8: [array([8]), array([-8])], 9: [array([9]), array([-9])], 10: [array([10]), array([-10])], 11: [array([11]), array([-11])], 12: [array([12]), array([-12])], 13: [array([13]), array([-13])],
您能发布您的 npy 文件或类似文件吗?我有一个 numpy 文件查看器正在工作,并想检查以确保您的数据可以使用它。
【参考方案1】:
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)
请注意,字典已包装在 0d 对象 dtype 数组中。当时的字典结构是pickled
。带有字典的数组以np.save
格式腌制。字典和对象 dtype 数组都可以包含指向其他 Python 对象的指针,这些对象需要自己的酸洗方法。换句话说,它一直是 Python!。
如果您尝试使用 json
,您会发现 numpy 数组不是 json 可序列化的。您必须申请 tolist()
才能将数组转换为列表。 json
只是保存字典、列表和字符串(许多语言共享的基本 javascript 结构)。 numpy 数组可能还有第三方序列化程序。
h5
是用 C++ 编写的,有很多语言接口。 h5dump
是一个方便的查看器。但是要从 Python 字典中编写字典,您必须使用 h5py
(或 pytables
)。字典很好地映射到 h5 组,numpy 数组映射到 h5 数据集。
【讨论】:
【参考方案2】:我认为这个工具可以帮助你做你需要的。它可以帮助您编辑 .npy 文件(如电子表格)的内容。它还具有将 .npy 文件可视化为 2D 灰度图像和 3D 点云的选项:
https://github.com/csmailis/NPYViewer
【讨论】:
【参考方案3】:目前没有能够将.npy
的内容作为纯文本读取的GUI。但是,如果您认为这样的程序会对社区有益,那么您可以轻松创建这样的工具。
让我们看一下上述工具的几种工作方式:
只需使用控制台命令将np.load
的结果输出到文件:
$ python your_program.py > file.txt
这会将控制台输出从your_program.py
重定向到file.txt
。
使用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')
【讨论】:
以上是关于是否有 GUI 可以查看 .npy 文件的内容?的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何 MySQL 工具可用于使用 GUI(而不是通过编写代码手动)修改存储过程?