Сохранение переменных и результатов уравнений в словаре в Python - PullRequest
0 голосов
/ 07 мая 2020

У меня есть уравнение с тремя переменными. Я использую три цикла for для его вычисления.

Я хотел бы преобразовать результаты уравнения в словарную форму.

Например,

import numpy as np

equation = np.ones((2, 3, 4))
for Ls in range(2):
    for ts in range(3):
        for angle in range(4):
            L = (Ls+1) * 10
            t = ts * 5
            theta_i = 18 * angle
            equation[Ls][ts][angle] = L * t + theta_i

print(equation)


[[[  0.  18.  36.  54.]
  [ 50.  68.  86. 104.]
  [100. 118. 136. 154.]]
 [[  0.  18.  36.  54.]
  [100. 118. 136. 154.]
  [200. 218. 236. 254.]]]

Я бы хотел, чтобы результаты были примерно такими:

dict = {Ls: 0, ts: 0, angle: 0, equation: 0}
dict = {Ls: 0, ts: 0, angle: 1, equation: 18}
dict = {Ls: 0, ts: 0, angle: 2, equation: 36}
dict = {Ls: 0, ts: 0, angle: 3, equation: 54}
dict = {Ls: 0, ts: 1, angle: 0, equation: 50}
dict = {Ls: 0, ts: 1, angle: 1, equation: 68}
dict = {Ls: 0, ts: 1, angle: 2, equation: 86}
dict = {Ls: 0, ts: 1, angle: 3, equation: 104}
dict = {Ls: 0, ts: 2, angle: 0, equation: 100}
dict = {Ls: 0, ts: 2, angle: 1, equation: 118}
dict = {Ls: 0, ts: 2, angle: 2, equation: 136}
dict = {Ls: 0, ts: 2, angle: 3, equation: 154}

dict = {Ls: 1, ts: 0, angle: 0, equation: 0}
dict = {Ls: 1, ts: 0, angle: 1, equation: 18}
dict = {Ls: 1, ts: 0, angle: 2, equation: 36}
dict = {Ls: 1, ts: 0, angle: 3, equation: 54}
dict = {Ls: 1, ts: 1, angle: 0, equation: 100}
dict = {Ls: 1, ts: 1, angle: 1, equation: 118}
dict = {Ls: 1, ts: 1, angle: 2, equation: 136}
dict = {Ls: 1, ts: 1, angle: 3, equation: 154}
dict = {Ls: 1, ts: 2, angle: 0, equation: 200}
dict = {Ls: 1, ts: 2, angle: 1, equation: 218}
dict = {Ls: 1, ts: 2, angle: 2, equation: 236}
dict = {Ls: 1, ts: 2, angle: 3, equation: 254}

Я пытаюсь выполнить поиск в Интернете, но не могу найти ничего похожего пример. Пожалуйста помоги.

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Как насчет этого:

import numpy as np
from collections import defaultdict
import json
equation = np.ones((2, 3, 4))
result_dict = defaultdict(lambda: defaultdict(dict))
for Ls in range(2):
    for ts in range(3):
        for angle in range(4):
            L = (Ls+1) * 10
            t = ts * 5
            theta_i = 18 * angle
            result_dict[Ls][ts][angle] = L * t + theta_i

#export to file
with open("result.json","w") as file:
    json.dump(result_dict, file)

#import from file
result_dict = json.load(open("result.json"))

#query result
def get_equation(result_dict, Ls, ts, angle):
    return result_dict[str(Ls)][str(ts)][str(angle)]

print(get_equation(result_dict=result_dict, Ls=0, ts=1, angle=1))
#68
0 голосов
/ 07 мая 2020

Вы можете добавить:

print("dict = [Ls: {}, ts: {}, angle: {}, equation: {}]".format(Ls, ts, angle, L * t + theta_i))

в конце тела цикла for (сразу после equation[Ls][ts][angle] = L * t + theta_i и все еще в циклах)

Это то, что вы хотите?

...