python 足し合わせがうまくいかない。ValueError: Expected 1D or 2D array, got 0D array instead

実現したいこと

スペクトル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 コメント