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

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

ただいまの
回答率

90.75%

  • Python

    6886questions

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

  • NumPy

    379questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 207

susum

score 6

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といった文字を回す方法を教えていただけたら嬉しいです。

よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

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

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

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

# ファイル読込
nums = [1,2,3,4,5,6,7,8,9,10,11,12,10,10] # データファイル名の番号
datas = []  # A~N
for n in nums:
    d = np.loadtxt("/Users/name/Downloads/date%d.txt" % (n))
    datas.append( d)

# 以下、A -> datas[0] となる

#%%
n = np.int(datas[0][:,2].max())#frame数
print(n)

l = np.int(datas[0].shape[0] / n)#1frameの列データ数
print(l)

w = datas[0][0:l,0]#波長
print(w)

#各frameに収監
vals = [] # AA~NN
for d in datas:
    vals.append( np.zeros([l,n]))

for i in range(n):
    for idx, v in enumerate(vals): # AA~NN
       v[:,i] = datas[idx][(l*i):(l*(i+1)),3]# valsに各frameを収監

#各frameの積算値
# (あとは同じように)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/19 12:37

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

    キャンセル

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

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    6886questions

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

  • NumPy

    379questions

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