質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2199閲覧

python 複数ファイルの処理 簡略方法

susum

総合スコア14

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/10/18 05:44

import numpy as np import matplotlib.pyplot as plt #fname = "/Users/name/Downloads/date1.txt" #A = np.loadtxt(fname) #fname = "/Users/name/Downloads/date2.txt" #B = np.loadtxt(fname) #fname = "/Users/name/Downloads/date3.txt" #C = np.loadtxt(fname) #fname = "/Users/name/Downloads/date4.txt" #D = np.loadtxt(fname) #fname = "/Users/name/Downloads/date5.txt" #E = np.loadtxt(fname) #fname = "/Users/name/Downloads/date6.txt" #F = np.loadtxt(fname) #fname = "/Users/name/Downloads/date7.txt" #G = np.loadtxt(fname) #fname = "/Users/name/Downloads/date8.txt" #H = np.loadtxt(fname) #fname = "/Users/name/Downloads/date9.txt" #I = np.loadtxt(fname) #fname = "/Users/name/Downloads/date10.txt" #J = np.loadtxt(fname) #fname = "/Users/name/Downloads/date11.txt" #K = np.loadtxt(fname) #fname = "/Users/name/Downloads/date12.txt" #L = np.loadtxt(fname) #fname = "/Users/name/Downloads/date10.txt" #M = np.loadtxt(fname) #fname = "/Users/name/Downloads/date10.txt" #N = np.loadtxt(fname) plt.style.use("ggplot")#見やすくする #%% n = np.int(A[:,2].max())#frame数 print(n) l = np.int(A.shape[0] / n)#1frameの列データ数 print(l) w = A[0:l,0]#波長 print(w) #%% #ABCを各frameに収監 AA = np.zeros([l,n]) BB = np.zeros([l,n]) CC = np.zeros([l,n]) DD = np.zeros([l,n]) EE = np.zeros([l,n]) FF = np.zeros([l,n]) GG = np.zeros([l,n]) HH = np.zeros([l,n]) II = np.zeros([l,n]) JJ = np.zeros([l,n]) KK = np.zeros([l,n]) LL = np.zeros([l,n]) MM = np.zeros([l,n]) NN = np.zeros([l,n]) for i in range(n): AA[:,i] = A[(l*i):(l*(i+1)),3]#AAに各frameを収監 BB[:,i] = B[(l*i):(l*(i+1)),3]#BBに各frameを収監 CC[:,i] = C[(l*i):(l*(i+1)),3]#CCに各frameを収監 DD[:,i] = D[(l*i):(l*(i+1)),3]#DDに各frameを収監 EE[:,i] = E[(l*i):(l*(i+1)),3]#EEに各frameを収監 FF[:,i] = F[(l*i):(l*(i+1)),3]#FFに各frameを収監 GG[:,i] = G[(l*i):(l*(i+1)),3]#FFに各frameを収監 HH[:,i] = H[(l*i):(l*(i+1)),3]#FFに各frameを収監 II[:,i] = I[(l*i):(l*(i+1)),3]#FFに各frameを収監 JJ[:,i] = J[(l*i):(l*(i+1)),3]#FFに各frameを収監 KK[:,i] = K[(l*i):(l*(i+1)),3]#FFに各frameを収監 LL[:,i] = L[(l*i):(l*(i+1)),3]#FFに各frameを収監 MM[:,i] = M[(l*i):(l*(i+1)),3]#FFに各frameを収監 NN[:,i] = N[(l*i):(l*(i+1)),3]#FFに各frameを収監 #%% #各frameの積算値 AAsum = np.sum(AA, axis = 0) BBsum = np.sum(BB, axis = 0) CCsum = np.sum(CC, axis = 0) DDsum = np.sum(DD, axis = 0) EEsum = np.sum(EE, axis = 0) FFsum = np.sum(FF, axis = 0) GGsum = np.sum(GG, axis = 0) HHsum = np.sum(HH, axis = 0) IIsum = np.sum(II, axis = 0) JJsum = np.sum(JJ, axis = 0) KKsum = np.sum(KK, axis = 0) LLsum = np.sum(LL, axis = 0) MMsum = np.sum(MM, axis = 0) NNsum = np.sum(NN, axis = 0) plt.figure() print('6frame積算:{0}'.format(AA[:,5].sum())) print('6frame積算:{0}'.format(BB[:,5].sum())) print('6frame積算:{0}'.format(CC[:,5].sum())) print('6frame積算:{0}'.format(DD[:,5].sum())) print('6frame積算:{0}'.format(EE[:,5].sum())) print('6frame積算:{0}'.format(FF[:,5].sum())) print('6frame積算:{0}'.format(GG[:,5].sum())) print('6frame積算:{0}'.format(HH[:,5].sum())) print('6frame積算:{0}'.format(II[:,5].sum())) print('6frame積算:{0}'.format(JJ[:,5].sum())) print('6frame積算:{0}'.format(KK[:,5].sum())) print('6frame積算:{0}'.format(LL[:,5].sum())) print('6frame積算:{0}'.format(MM[:,5].sum())) print('6frame積算:{0}'.format(NN[:,5].sum())) #まとめ plt.figure() plt.plot(AAsum[14]/AA[:,5].sum(),(AAsum[14]-AAsum[20])/AA[:,5].sum(),'ob')#各frameの積算 plt.plot(BBsum[14]/BB[:,5].sum(),(BBsum[14]-BBsum[20])/BB[:,5].sum(),'or')#各frameの積算 plt.plot(CCsum[14]/CC[:,5].sum(),(CCsum[14]-CCsum[20])/CC[:,5].sum(),'oy')#各frameの積算 plt.plot(DDsum[14]/DD[:,5].sum(),(DDsum[14]-DDsum[20])/DD[:,5].sum(),'og')#各frameの積算 plt.plot(EEsum[14]/EE[:,5].sum(),(EEsum[14]-EEsum[20])/EE[:,5].sum(),'oc')#各frameの積算 plt.plot(FFsum[14]/FF[:,5].sum(),(FFsum[14]-FFsum[20])/FF[:,5].sum(),'om')#各frameの積算 plt.plot(GGsum[14]/GG[:,5].sum(),(GGsum[14]-GGsum[20])/GG[:,5].sum(),'ok')#各frameの積算 plt.plot(HHsum[14]/HH[:,5].sum(),(HHsum[14]-HHsum[20])/HH[:,5].sum(),'.b')#各frameの積算 plt.plot(IIsum[14]/II[:,5].sum(),(IIsum[14]-IIsum[20])/II[:,5].sum(),'.r')#各frameの積算 plt.plot(JJsum[14]/JJ[:,5].sum(),(JJsum[14]-JJsum[20])/JJ[:,5].sum(),'.y')#各frameの積算 plt.plot(KKsum[14]/KK[:,5].sum(),(KKsum[14]-KKsum[20])/KK[:,5].sum(),'.g')#各frameの積算 plt.plot(LLsum[14]/LL[:,5].sum(),(LLsum[14]-LLsum[20])/LL[:,5].sum(),'.c')#各frameの積算 plt.plot(MMsum[14]/MM[:,5].sum(),(MMsum[14]-MMsum[20])/MM[:,5].sum(),'.m')#各frameの積算 plt.plot(NNsum[14]/NN[:,5].sum(),(NNsum[14]-NNsum[20])/NN[:,5].sum(),'.k')#各frameの積算 コード

現在、複数のファイルを読み取り処理しています。
同じ文字列をひたすら打ち込んでいるのですが、for文などで簡略化することは可能でしょうか?
AAやBBsumといった文字を回す方法を教えていただけたら嬉しいです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

A~N などを別の変数とするのではなくリストの要素として扱ったほうがループで処理しやすくなります。

たとえばA~Ndatas[]AA~NNvals[]AAsum~NNsumsums[]などとした場合、Adatas[0]と表せます。

以下は修正イメージです。動作確認はしていませんので参考程度に。

Python

1# ファイル読込 2nums = [1,2,3,4,5,6,7,8,9,10,11,12,10,10] # データファイル名の番号 3datas = [] # A~N 4for n in nums: 5 d = np.loadtxt("/Users/name/Downloads/date%d.txt" % (n)) 6 datas.append( d) 7 8# 以下、A -> datas[0] となる 9 10#%% 11n = np.int(datas[0][:,2].max())#frame数 12print(n) 13 14l = np.int(datas[0].shape[0] / n)#1frameの列データ数 15print(l) 16 17w = datas[0][0:l,0]#波長 18print(w) 19 20#各frameに収監 21vals = [] # AA~NN 22for d in datas: 23 vals.append( np.zeros([l,n])) 24 25for i in range(n): 26 for idx, v in enumerate(vals): # AA~NN 27 v[:,i] = datas[idx][(l*i):(l*(i+1)),3]# valsに各frameを収監 28 29#各frameの積算値 30# (あとは同じように)

投稿2017/10/18 07:11

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

susum

2017/10/19 03:37

ありがとうございます。 リストの要素として扱ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問