2013-10-05 97 views
0

我想添加一個描述到一個python numpy數組。添加描述字符串到一個numpy數組

例如,使用numpy的作爲交互式數據語言的時候,我想這樣做:

A = np.array([[1,2,3],[4,5,6]]) 
A.description = "Holds all the data from experiment 1. Each row contains an intensity measurement with the following columns: time [s], intensity [W/m^2], error [%]." 

但它給:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'numpy.ndarray' object has no attribute 'description' 

這是可能沒有子的numpy的.ndarray類?

問候, 喬納斯

+1

也許最簡單的事情將是使其中包含數組類和你的描述。這樣你就不必再爲ndarray子類化,因爲你可能知道這有點古怪。 –

+0

這也將是一個更明智的方式,使函數處理數組中的數據。 – rlms

+0

如果您不希望描述繼續存在數組操作,那麼子類化可以輕鬆實現。如果你想要更多,它需要多一點,並會留下一些操作,信息將不會被保留。 – seberg

回答

3

最簡單的方法是使用一個namedtuple同時容納陣列和能解密:

>>> from collections import namedtuple 
>>> Array = namedtuple('Array', ['data', 'description']) 
>>> A = Array(np.array([[1,2,3],[4,5,6]]), "Holds all the data from experiment 1. Each row contains an intensity measurement with the following columns: time [s], intensity [W/m^2], error [%].") 
>>> A.data 
array([[1, 2, 3], 
     [4, 5, 6]]) 
>>> A.description 
'Holds all the data from experiment 1. Each row contains an intensity measurement with the following columns: time [s], intensity [W/m^2], error [%].' 
+0

不錯。但可能我會寫一個自己的數據類(如John Z.建議的),並具有一個函數來保存和加載數據和描述到一個.dat文件。在完成之前,namedtuple將是我的解決方案。 – Jonas