【问题标题】:How do I view data object contents within an npz file?如何查看 npz 文件中的数据对象内容?
【发布时间】:2017-11-01 12:37:28
【问题描述】:

我正在使用 Spyder IDE 和 Python 2.7。

我有一个名为 data.npz 的 npz 文件,它是给我的。我想将此文件加载到 Spyder 并查看其中的内容。

首先我已经这样做了:

import numpy as np
data = np.load('data.npz')

在 Spyder 的变量资源管理器中,我有一个名为“data”且类型为“object”的变量。当我双击这个变量时,Spyder 给出一个错误提示“当前不支持对象数组”。

当我只是打字时

data

我得到这样的东西:

array({'a': array([ 1,2,3, ...,
         4,5,6]), 'b': 10, 'c': array([-1,-2,-3]), 'd': 25, 'e': 1}, dtype=object)

如何访问“a”、“b”、“c”、“d”等?

【问题讨论】:

  • 我从来没有见过这样的东西,但似乎你有一个包含字典的数组。像data[0] 这样的常规切片似乎不适用于此类对象。一个快速的解决方案是将您的数组转换为这样的字典:dict_data = data.tolist(),然后使用键值进行切片。在您的情况下,dict_data['a'] 将返回 array([123,...]) 等等。
  • @gionni 太棒了,非常感谢。
  • 不客气! ;-)
  • Spyder 提供了变量资源管理器,这在这种情况下非常方便。让我们把数据放在上面的问题中。如果有人在 Eclipse 或 IPython 中工作,print(data.files) 会生成一个列表 ['a','b','c','d','e']。然后,data['a'] 将返回a 的内容,如上述评论中的@gionni。

标签: python arrays python-2.7 object spyder


【解决方案1】:

要获得所有组成文件的列表,只需使用:

$ data.files

【讨论】:

    【解决方案2】:

    尝试访问字典中的每个键,如下所示:

    data['a']  
    data['b']
    

    【讨论】:

    • 如果您解释了您提供的代码如何回答问题,这将是一个更好的答案。
    【解决方案3】:

    print(data.files) 将为您提供 npz 文件中包含的数组列表。然后可以使用 data['a'] 查看 a 的内容,使用 data['b'] 查看 b,以此类推

    【讨论】:

      猜你喜欢
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2013-07-05
      • 2015-05-05
      • 2011-04-05
      相关资源
      最近更新 更多