2017-05-31 4077 views
1

我正在使用Spyder IDE和Python 2.7。如何查看npz文件中的數據對象內容?

我有一個叫做data.npz的npz文件給了我。我想將這個文件加載到Spyder中並查看裏面的內容。

要開始我已經做到了這一點:

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

在我Spyder的可變資源管理器中,我有一個名爲「數據」和類型「對象」的變量。當我雙擊這個變量時,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',等等?

+0

我從來沒有見過類似的東西,但似乎你有一個包含字典的數組。像'data [0]'這樣的定期切片似乎不適用於這樣的對象。一個快速的解決方案是將你的數組轉換爲一個字典,如下所示:'dict_data = data.tolist()',然後使用鍵值切片。在你的情況下,'dict_data ['a']'將返回數組([123,...]),等等。 – gionni

+0

@gionni真棒,工作完美謝謝。 – Darcy

+0

歡迎您! ;-) – gionni

回答

-1

您的數據是以字典的形式。你可以告訴,因爲數據被大括號{}內封閉,因爲數據是在形式

"key": "value" 

此外,它看起來像你的字典被封閉在出於某種原因的數組。或者它可能只是間諜。如果它在列表中,您可以從數組中提取它

my_dict = data[0] 

然後,您可以訪問每個密鑰的數據,例如,對於被稱爲「a」的密鑰,你可以做

key_data = my_dict["a"] 
+1

我認爲這是行不通的,因爲字典包含在一個數組中,所以您必須先將數組轉換爲字典 – gionni

+0

爲真。它需要是my_dict = data [0] – mknull

+1

我創建了以下示例代碼:'d = np.array({'1':np.array([1,2,3]),'2':np.array ([2,3,4,5])})'並試圖將其切片爲'd [0]'返回一個錯誤。使用'tolist'在字典中轉換它雖然 – gionni