99列に99個の浮動小数点数を持つn個のtxtファイルがあります。各ファイルを読み取り、次のスクリプトですべてのデータを追加します。
import glob
import numpy as np
import matplotlib.pyplot as plt
msd_files = (glob.glob('MSD_no_fs*'))
msd_all=[]
for msd_file in msd_files:
# print(msd_file)
msd = numpy.loadtxt(fname=msd_file, delimiter=',')
msd_all.append(msd)
その後、各ファイルの列ごとの合計を作成する必要があります。たとえば、file1、column1 + file2、column1 + ... + file(n)column(1)とし、これをすべての列に対して繰り返します。これを実行するための効果的な方法は何でしょうか?そのためにリスト内包表記を使用できますか?
**編集されたコードとそれは今うまく動作します。
import glob
import numpy as np
import matplotlib.pyplot as plt
msd_files = (glob.glob('MSD_no_fs*'))
msd_all=[]
for msd_file in msd_files:
with open(msd_file) as f:
for line in f:
# msd_all.append([float(v) for v in line.strip().split(',')])
msd_all.append(float(line.strip()))
msa_array = np.array(msd_all)
x=np.split(msa_array,99)
x=np.array(x)
result=np.mean(x,axis=0)
print(result.shape)
print(len(result))
それはあなたが望む効率レベルに依存します。numpyを使用して多くのcsvファイルをロードするのは悪い選択かもしれません。これが私の提案です。
import glob
import numpy as np
msd_files = (glob.glob('MSD_no_fs*'))
msd_all=[]
for msd_file in msd_files:
with open(msd_file) as f:
for line in f:
msd_all.append([float(v) for v in line.strip().split(',')])
msa_array = np.array(msd_all)
result = msa_array.sum(axis=0)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加