2013-10-05 2 views
0

Я хотел бы добавить описание в массив numpy python.Добавить строку описания в массив 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 класс?

С уважением, Jonas

+1

Может быть, проще всего было бы сделать класс, который содержит массив и ваше описание. Таким образом, вам не придется подклассифицировать ndarray, который, как вы, наверное, знаете, немного глупо. –

+0

Это также было бы более разумным способом создания функций, связанных с этими данными в массиве. – rlms

+0

Если вы не хотите, чтобы описание выдержало операции массива, для этого легко выполняется подкласс. Если вы хотите больше, это требует немного больше и оставит несколько операций, где информация не будет сохранена в любом случае. – seberg

ответ

3

простым способом было бы использовать namedtuple держать как массив и Decription:

>>> 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

Ницца. Но, вероятно, я напишу свой собственный класс данных (как предложил Джон З.) с функцией сохранения и загрузки данных и описания в файл .dat. Пока это не будет сделано, имя named будет моим решением. – Jonas

Смежные вопросы