2016-01-07 2 views
0

Я довольно новичок в Python, и я ищу структуру данных для хранения результатов измерений с различными параметрами.Python datastructure со строкой для индексирования

У меня есть два параметра: param_1_vals = [10, 20, 30, 40] и param_2_vals = [1, 2, 3, 4], с которыми я делаю некоторые калоутации и, наконец, получаю результат result, который представляет собой массив Numpy. Поскольку я просматриваю параметры вложенных for oops, для каждой комбинации параметров я получаю другой массив result.

Интересно, если есть многомерная структура данных, которая способна хранить все результаты для всех комбинаций параметров могут быть индексированы как

result_(param_1,param_2) 

, который дает мне соответствующий массив Numpy для этой конкретной комбинации параметров. Предпочтительно параметры могут быть не только числовыми, но и строковыми.

+1

посмотрите ['pandas'] (http://pandas.pydata.org/) – EdChum

ответ

1

для малых входных массивов, самым простым решением, вероятно, является использование 2D-массива с индексами строк из первого входного массива и индексов столбцов из второго входного массива:

result = numpy.empty((len(param_1_vals),len(param_2_vals))) 
result[i,j] = yourCalculation(param_1_vals[i],param_2_vals[j]) 

Это более элегантный (и более эффективно для больших массивов данных) для хранения результатов в словаре с кортежем входных значений в качестве ключей:

result = {} 
result[(a,b)] = yourCalculation(a,b) 

Вы также можете использовать индексы в качестве словаря ключей, если a и b являются поплавками или изменяемыми переменными.

result = {} 
result[(i,j)] = yourCalculation(param_1_vals[i],param_2_vals[j]) 

В общем, что вы пытаетесь достичь, это memoization.

1

Используйте dict, ключ-значение структуры данных

result_ = {} 

сочетание Еогеаспа param_1, param_2
формы кортежа т = (param_1, param_2) и использовать его в качестве ключа

result_[t]= result 
+0

Разве это не так, как предложено более элегантное решение @leeladam? –

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