Сохраняйте переменные в каждой итерации цикла for и загружайте их позже - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу сохранить переменные m, n, r, X, Y (см. Код ниже) в одном файле, например, file_1, и повторять для каждой итерации с новым именем файлапредпочтительно с номером итерации, например, file_2.

В MATLAB я мог бы просто сделать save(['data_',int2str(i),'.mat'],'variable1', 'variable2' ), чтобы data(1) содержал m, n, r, X, Y;data(2) будет содержать m, n, r, X, Y с их новыми значениями и т. Д.

Как мне сделать то же самое в Python?

Test = 5
for i in range(Tests):
    r = 5
    m = 500
    n = 500
    X=np.random.rand(m,n)
    Y=np.random.rand(m,n)

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

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

import numpy as np
Test = 5
for i in range(Test):
    r = 5
    m = 500
    n = 500
    X=np.random.rand(m,n)
    Y=np.random.rand(m,n)

    file = open('file_{}'.format(i+1), 'w')
    file.write('r = {};m = {};n = {};X = {};Y = {}'.format(r, m, n, X, Y))
    file.close()

Загрузка сохраненных переменных

exec(open('file_1', 'r').read())
0 голосов
/ 14 ноября 2018

Библиотека pickle - путь сюда.

import pickle
Tests = 5
data = {}
for i in range(Tests):
    data['r'] = 5
    data['m'] = 500
    data['n'] = 500
    data['X'] = np.random.rand(data['m'],data['n'])
    data['Y'] = np.random.rand(data['m'],data['n'])
    with open('data{}.pickle'.format(i), 'wb') as f:
        pickle.dump(data, f)

Это позволит вам получить доступ к вашему словарю данных позже. Например,

with open('data0.pickle', 'rb') as f:
    data = pickle.load(f)
r = data['r']
m = data['m']

и т. Д.

0 голосов
/ 14 ноября 2018

Вот как вы можете сделать то же самое в Python.

import numpy as np
Test = 2
for i in range(Test):
    r = 5
    m = 500
    n = 500
    X=np.random.rand(m,n)
    Y=np.random.rand(m,n)
    file_name = 'test_'+str(i)
    open(file_name,'w').write(str(r) + str(m) + str(n) + str(X) + str(Y))
...