実現したいこと
スペクトルP(v)のsavetxtを条件によって、係数をかけた形で足し合わせたい
条件Aの時、rだけを使用
条件Bの時、r+r2で使用 のような形で足し合わせたい
発生している問題・分からないこと
以下のエラーメッセージが発生しました
エラーメッセージ
error
1--------------------------------------------------------------------------- 2ValueError Traceback (most recent call last) 3<ipython-input-115-b9746229ec36> in <module> 4 21 s += (vdt*((0.9772*r)+(0.0228*r2))) 5 22 return s 6---> 23 np.savetxt("{}/Pall/Pall/Pall_g10^4-7_B10^3_t^20.0_t_start^{:.1f}.txt".format(date,k),A(v)) 7 8<__array_function__ internals> in savetxt(*args, **kwargs) 9 10F:\anaconda\lib\site-packages\numpy\lib\npyio.py in savetxt(fname, X, fmt, delimiter, newline, header, footer, comments, encoding) 11 1392 # Handle 1-dimensional arrays 12 1393 if X.ndim == 0 or X.ndim > 2: 13-> 1394 raise ValueError( 14 1395 "Expected 1D or 2D array, got %dD array instead" % X.ndim) 15 1396 elif X.ndim == 1: 16 17ValueError: Expected 1D or 2D array, got 0D array instead
該当のソースコード
python
1from scipy.special import kv 2import matplotlib.pyplot as plt 3from scipy.integrate import quad 4import numpy as np 5import math 6from math import gamma 7from sympy import *8import os 9from matplotlib import rc 10from decimal import Decimal , ROUND_HALF_UP 11from scipy.optimize import curve_fit 12import seaborn as sns 13 14date="20240502"15 16 17for k in np.arange(0.0,3.3,0.1):18 def A(v): 19 s=020 21 if k<1.7:22 for i1 in np.arange(0.0,k,0.1):23 vdt=((i1+0.1)-(i1))24 r=np.loadtxt("{}/Pall/Ptot_UP/Ptot_UP_B10^3_t^{:.1f}.txt".format(date,i1))25 s += vdt*r 26 return s 27 28 elif 1.7 <= k < 3.3:29 for i1 in np.arange(0.0,1.7,0.1):30 vdt=((i1+0.1)-(i1))31 r=np.loadtxt("{}/Pall/Ptot_UP/Ptot_UP_B10^3_t^{:.1f}.txt".format(date,i1))32 s += vdt*r 33 for i2 in np.arange(1.7,k,0.1):34 vdt=((i2+0.1)-(i2))35 r =np.loadtxt("{}/Pall/Ptot_UP/Ptot_UP_B10^3_t^{:.1f}.txt".format(date,i2))36 r2=np.loadtxt("{}/Pall/Ptot_DOWN/Ptot_g10^4.5_B10^3_t^{:.1f}.txt".format(date,i2-1.7))37 s += (vdt*((0.9772*r)+(0.0228*r2)))38 return s 39 np.savetxt("{}/Pall/Pall/Pall_g10^4-7_B10^3_t^20.0_t_start^{:.1f}.txt".format(date,k),A(v))40
試したこと・調べたこと
上記の詳細・結果
スペクトルP(v)のtxtを除いたfor if文で処理がされるかの確認を行った。txtなしでは動くようでファイルの確認をしてみる
python
1コード 2for k in np.arange(0.0,3.3,0.1):3 s=0 4 if k<1.7:5 for i1 in np.arange(0.0,k,0.1):6 vdt=((i1+0.1)-(i1))7 s += vdt 8 print(s)9 elif 1.7 <= k < 3.3:10 for i1 in np.arange(0.0,1.7,0.1):11 vdt=((i1+0.1)-(i1))12 s += vdt 13 for i2 in np.arange(1.7,k,0.1):14 vdt=((i2+0.1)-(i2))15 s += (vdt*((0.9772)+(0.0228)))16 print (s)17 18
0 0.1 0.2 0.4 0.4 0.5 0.7 0.7 0.7999999999999999 0.8999999999999999 0.9999999999999999 1.1 1.3000000000000003 1.3000000000000003 1.4000000000000004 1.5000000000000004 1.6000000000000005 1.8000000000000007 1.9000000000000008 2.000000000000001 2.100000000000001 2.200000000000001 2.300000000000001 2.4000000000000012 2.5000000000000013 2.5000000000000013 2.6000000000000014 2.8000000000000016 2.9000000000000017 3.0000000000000018 3.0000000000000018 3.100000000000002 3.300000000000002
txtファイルの中身についても確認を行ったが中身はあるようで、係数をかけて足し合わせるだけの処理がなぜうまくいかないかわからない
v=np.logspace(0,20,N) y1=np.loadtxt("{}/Pall/Ptot_UP/Ptot_UP_B10^3_t^0.0.txt".format(date)) plt.plot(v,y1) plt.xlim(1e0,1e20) plt.ylim(1e-28,1e-13) plt.xscale('log') plt.yscale('log') plt.grid()
補足
python
python 3
jupyter notebook
0 コメント