2015-06-10 1 views
0

У меня есть файл с 44 586 строками данных. Он считывается при помощи pylab:Как создать несколько выходных файлов с одним входным файлом с помощью команды np.random.normal?

data = pl.loadtxt("20100101.txt") 
density = data[:,0] 

мне нужно запустить что-то вроде ...

densities = np.random.normal(density, 30, 1) 
np.savetxt('1.txt', np.vstack((densities.ravel())).T) 

... и создать новый файл с именем 1.txt, который имеет все 44,586 линии моих данных рандомизированный в пределах параметров, которые я желаю. Могут ли мои приведенные выше команды быть достаточными для чтения и выполнения того, что я хочу в каждой строке данных?

Более сложная часть поверх этого - это то, что я хочу запустить это 1000 раз и создать 1000 файлов .txt (1.txt, 2.txt ... 1000.txt), каждый из которых выполняет ту же самую команду ,

Я застреваю при попытке запустить циклы в скриптах, так как я все еще очень неопытен. У меня возникли проблемы даже с тем, чтобы начать работать так, как я хочу, - также я смущен, как обрабатывать сохранение файлов с их разными именами. Я использовал np.savetxt в прошлом, но не знаю, как заставить его выполнять эту задачу.

Спасибо за помощь!

+1

Почему бы не использовать петлю – The6thSense

+0

Потому что я не знаю, как ее применять, поэтому я прошу здесь. – Vlad

+1

Вы могли бы предоставить образец входного файла – The6thSense

ответ

2

Есть две незначительные проблемы: первая связана с тем, как выбрать имя файла (которое может быть разрешено с помощью поддержки питонов для конкатенации строк), вторая относится к np.random.normal - которая разрешает параметр размера, когда loc является скаляр.

data = pl.loadtxt("20100101.txt") 
density = data[:,0] 
for i in range(1, 1001): 
    densities = np.random.normal(loc=density, scale=30) 
    np.savetxt(str(i) + '.txt', densities) 
+0

Благодарим вас за ответ. Я испытаю это, когда буду работать завтра. Это выглядит очень просто, мне жаль, что я не смог сам придумать это. – Vlad

+0

Работает как очарование! – Vlad