Применение простой функции к CSV и сохранение нескольких файлов CSV - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь реплицировать данные путем умножения каждого значения на диапазон значений и сохранения результатов в формате CSV.

Я создал функцию "Replicate_Data", которая принимает входной массив numpy и умножает его на случайное значение в диапазоне.Каков наилучший способ создать 100 файлов и сохранить как P3D1, P4D1 и так далее.

def Replicate_Data(data: np.ndarray) -> np.ndarray:
    Rep_factor= random.uniform(-3,7)
    data1 = data * Rep_factor
    return data1

P2D1 = Replicate_Data(P1D1)
np.savetxt("P2D1.csv", P2D1, delimiter="," , dtype = complex)

1 Ответ

1 голос
/ 28 мая 2019

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

Я генерирую игрушечные данные с именем toy, затем я делаю n случайные значения, используя np.random.uniform, и называю его randos, затем я умножаю эти два объекта, чтобы сформировать out, используя цифровую трансляцию. Вы также можете выполнить это умножение в цикле (фактически, в том же самом, в котором вы сохраняете): в зависимости от размера входного массива он может быть очень интенсивным, как я уже писал. Более полный ответ, вероятно, зависит от формы ваших входных данных.

import numpy as np
toy = np.random.random(size=(2,2)) # a toy input array
n = 100 # number of random values
randos = np.random.uniform(-3,7,size=n) # generate 100 uniform randoms
# now multiply all elements in toy by the randoms in randos
out = toy[None,...]*randos[...,None,None] # this depends on the shape.
# this will work only if toy has two dimensions. Otherwise requires modification
# it will take a lot of memory... 100*toy.nbytes worth

# now save in the loop.. 
for i,o in enumerate(out):
    name = 'P{}D1'.format(str(i+1))
    np.savetxt(name,o,delimiter=",")


# a second way without the broadcasting (slow, better on memory)
# more like 2*toy.nbytes
#for i,r in enumerate(randos):
#    name = 'P{}D1'.format(str(i+1))
#    np.savetxt(name,r*toy,delimiter=",")
...