簡體   English   中英

將簡單功能應用於CSV並保存多個csv文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM