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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Python

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

解決済

forループで回した各値を保存してグラフ化したい

taketake1108
taketake1108

総合スコア2

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Python

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

3回答

0評価

0クリップ

522閲覧

投稿2021/12/15 03:37

編集2021/12/15 04:48

データフレームに保存してあるリストのデータを各値を変数として数値計算したものを出力したものを格納(リスト化)してグラフにしたいです.
各値はforループで出力できるのですが,その値を .append() を用いて保存しようとしてもエラーがおきてしまいます.

σD[]とσA[]はCSVファイルから取ってきたものを配列にしました.
kA,kFRET,kD,Iは別の場所で計算した数値です.
ちなみに
kA =333333333.3333333
kD =256410256.4102564
kFRET = 22988510524.344707
I = 30

醜いコードで申し訳ないです.足りないところがあれば教えてください.

python

#吸収断面積 import pandas as pd df = pd.read_csv('Alexa Fluor 594 spectrum.csv') f = lambda x: ((3.823e-23)*805*x)#ε=εA/maxドナーのモル吸光係数 df['Excitation'].apply(f) σD = [] σD = df['Excitation'].apply(f) print(σD) #吸収断面積(ドナー)を入手 df = pd.read_csv('Cy5 spectrum.csv') f = lambda x: ((3.823e-23)*2500*x)#ε=(εAモル吸光係数のピーク/max励起スペクトルのピーク) df['Excitation'].apply(f) σA = [] σA = df['Excitation'].apply(f) print(σA) #吸収断面積(アクセプタ)を入手 λ = [] E1_analy = [] E2_analy = []#グラフ用配列を用意 λ = 0 while λ < 650: E1_analy = σD[λ]*I/(kFRET+kD) E2_analy = (1/kA)*(kFRET*E1_analy+σA[λ]*I) λ += 1 E1_analy.append() E2_analy.append() print(λ) print(E1_analy) print(E2_analy) plt.plot(λ,E1_analy) plt.plot(λ,E1_analy) plt.legend() plt.show()

AttributeError Traceback (most recent call last)
<ipython-input-105-5a762b03f8b9> in <module>
12 λ += 1
13
---> 14 E1_analy.append()
15 E2_analy.append()
16

AttributeError: 'numpy.float64' object has no attribute 'append'

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

1T2R3M4

2021/12/15 04:08

AttributeError: 'numpy.float64' object has no attribute 'append' の意味は理解されていますか。
taketake1108

2021/12/15 04:30

計算結果が少数なのでappendの性質上使えないという意味ですかね.
jbpb0

2021/12/15 05:02 編集

E1_analy = σD[λ]*I/(kFRET+kD) E2_analy = (1/kA)*(kFRET*E1_analy+σA[λ]*I) ↓ 変更 tmp = σD[λ]*I/(kFRET+kD) tmp2 = (1/kA)*(kFRET*tmp+σA[λ]*I) E1_analy.append() E2_analy.append() ↓ 変更 E1_analy.append(tmp) E2_analy.append(tmp2) print(E1_analy) print(E2_analy) ↓ 変更 print(tmp) print(tmp2) で、どうでしょうか? 【追記】 上記は、 > 'numpy.float64' object has no attribute 'append' の対策のみです 「λ」も、計算に使った数値を全部格納するリストを作ってそれに格納しておかないと、上記エラーが直っても、「plt.plot(λ,E1_analy)」でエラー出ると思います
taketake1108

2021/12/15 05:03

ありがとうございます!やってみたのですがやはりfloatなので計算できない表示されてしまいます. ---> 10 tmp2 = (1/kA)*(kFRET*E1_analy+σA[λ]*I) 11 12 λ += 1 TypeError: can't multiply sequence by non-int of type 'float'
jbpb0

2021/12/15 05:20 編集

tmp2 = (1/kA)*(kFRET*E1_analy+σA[λ]*I) ではなくて tmp2 = (1/kA)*(kFRET*tmp+σA[λ]*I) です 【追記】 下記はエラー出ずに計算できます kA =333333333.3333333 kD =256410256.4102564 kFRET = 22988510524.344707 I = 30 σD = [0, 0, 0] σA = [0, 0, 0] E1_analy = [] E2_analy = [] λ = 0 tmp = σD[λ]*I/(kFRET+kD) tmp2 = (1/kA)*(kFRET*tmp+σA[λ]*I) E1_analy.append(tmp) E2_analy.append(tmp2) λ += 1 tmp = σD[λ]*I/(kFRET+kD) tmp2 = (1/kA)*(kFRET*tmp+σA[λ]*I) E1_analy.append(tmp) E2_analy.append(tmp2) 上記はwhileループにはしてませんが、whileループの最初の2回と実質同じですから、ループでもっと回しても大丈夫なはずですよね
taketake1108

2021/12/15 05:47

ありがとうございます!何とか数値結果は出てきました!大変参考になりました.λを同じようにリストに格納するにはfor文の中にλ.append(λ)を入れたのですが---> 15 λ.append(λ) 16 E1_analy.append(tmp) 17 E2_analy.append(tmp2) AttributeError: 'int' object has no attribute 'append' となってしまいました.tmpを用いてどっかに格納するべきなのでしょうか?
jbpb0

2021/12/15 07:39 編集

ループ内で計算に使った「λ」を全部格納するリストの名前は、「λ」ではダメです 他の名前で作っておかないと λ = [] ↓ 変更 λall = [] λ += 1 のすぐ上に下記を追加 λall.append(λ) plt.plot(λ,E1_analy) plt.plot(λ,E1_analy) ↓ 変更 plt.plot(λall, E1_analy) plt.plot(λall, E2_analy) みたいな感じ (実行させて確認してないので、何か見落としがあるかも)
jbpb0

2021/12/15 07:40

あと、 λ += 1 は print(λ) よりも後にしないと、printで表示されるのが一つずれますよ
taketake1108

2021/12/15 08:19

ありがとうございます! 参考にしたらグラフを出力することができました!!感謝感謝です!

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Python

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