[英]Applying a simple function to CSV and save multiple csv files
我試圖通過將每個值乘以一個值范圍來復制數據,並將結果保存為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)
這是一個示例,您可以用作參考。
我生成一個名為玩具數據toy
,然后我讓n
使用隨機值np.random.uniform
並調用它randos
,然后我乘這兩個對象,形成out
使用numpy的廣播。 您還可以循環執行此乘法(實際上與您保存的結果相同):根據輸入數組的大小,在我編寫時可能會占用大量內存。 一個更完整的答案可能取決於您輸入數據的形狀。
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=",")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.