わかさぎのブログ

プログラミング、Atcoderの勉強とか

Python

クラスの継承 コンストラクタの再利用

class A: def __init__(self): self.a = 100 class B: def __init__(self): self.b = 200 class C(A, B): def __init__(self): A.__init__(self) B.__init__(self) print("a + b = ", self.a + self.b) c = C() # => a + b = 300 クラス継承の時 super().__i…

ディレクトリを聞く(ミニマム)

fTyp = [("", "*")]iDir = os.path.abspath(os.path.dirname(__file__))file_name = tkinter.filedialog.askopenfilename(filetypes=fTyp, initialdir=iDir)

matplotlibで横線を引く

ax1.hlines(mean_1,0,20)ax1.hlines(sen_1_left,0,20)ax1.hlines(sen_1_right,0,20)ax2.hlines(mean_2,0,20)ax2.hlines(sen_2_left,0,20) ax2.hlines(sen_2_right,0,20) horizonの略 vlinesもある hlines(y座標,x_min,x_max)の引数

matplotlibで縦線を引く

ax1.axvline(x=sen_1_left , color="blue", label="meam±3sigma")ax1.axvline(x=sen_1_right , color="blue")ax2.axvline(x=sen_2_left , color="orange", label="meam±3sigma")ax2.axvline(x=sen_2_right , color="orange")

matplotlibテンプレ

# -*- coding: utf-8 -*- import matplotlib.pyplot as pltimport pandas as pdimport csvimport seaborn as sns sns.set_style("white")sns.set_style("ticks")sns.set_style({"xtick.direction": "in","ytick.direction": "in"}) #plt.rcParams['font.fami…

python3.10の不具合

エラー内容 pipでNumpyがインストールできない。 解決策 デフォルトpythonを3.9にしたら直った。 visualstudiocodeの左下のpython3.9とか書いてあるところをクリックするとpythonの選択ができる。 ANACONDAとの共存 ANACONDAをインストールするときにPATHを…

pandasでdfの行や列を取り出す

列 x=df.iloc[:,0]y=df.iloc[:,1] 行 y=df.iloc[1] 注意すべきはMATLABと違うところ。 行の場合はセミコロンがいらない。

サビツキゴレイフィルタ(savgol)

def savgol(y,n):#サビツキ-ゴレイフィルタ signed_y = signal.savgol_filter(y, n, 7, mode="mirror") return signed_y 結構お世話になっているフィルタ。 窓の長さは奇数にしないといけない。 参考にしたブログではデータ数/4 +1としていた。 n=len(list) …

移動平均フィルター

def move_average(y): #移動平均 param=15 v=np.ones(param) / param y=np.array(y) y_signed=np.convolve(y, v, mode='same') return y_signed

unzipは*zip

def data_range_csv_make_kai(self,file_name): with open(file_name, encoding="cp932") as f: lineral= f.read().splitlines() del lineral[0:320] #20行削除 data= for line in lineral: if line: data.append(line) else: break kara= for line in data:…

時系列データで初めて閾値超えた点の検出

#R開始点は閾値を超えたところとして定義する thresh=[] ; threshold=np.average(y[0:100]+100) for i,j in enumerate(y): if j>threshold: thresh.append(i) else: pass メモリの無駄遣いだが、thresholdを超えているなら空のリストに追加して、リストの先…

subplotするときにfor文を使う

def visualize_1(self,file_name): #結果を可視化する x=self.x ; y=self.y plt.rcParams["figure.figsize"] = (15, 8) plt.style.use('seaborn-whitegrid') fig=plt.figure() ax=[[0,0,0],[0,0,0]] for i in range(2): for j in range(3): ax[i][j]=fig.add…

大量のグラフを作成し保存

def picture_make(file_name): #画像保存用のディレクトリを作成しその中にグラフの画像を保存する picture_title=file_name[-8:-4] picture_box=os.path.join(path_loc,"picture") if os.path.exists(picture_box)==False: os.mkdir(picture_box) else: pas…

様々なフィルター

ピーク検出のために平滑化フィルタを使う場面があり、 移動平均フィルタとサビツキゴレイフィルタはよい結果を得た。 ローパスフィルタとHAMPELフィルタも試みたが微妙だった。 HAMPELフィルタ hampel · PyPI

ファイル名が短いファイルの頭に文字列追加

def mojisuu(file_names):#文字数が短すぎるとエラーになるからそれの回避、ファイル名の頭にAAAを追記 file_names_kai=[] for i in file_names: if len(i)<8: os.rename(os.path.join(path_loc , i) , os.path.join(path_loc , "AAA"+i)) file_names_kai.ap…

globの使い方

*などを用いてファイルを指定できる。 def osouji(path): for file in glob.glob(path): os.remove(file) osouji(os.path.join(path_loc,'*.csvkai')) 解説 tkのaskdirectoryで聞いた場所をglolbal変数(path_loc)にしておいて、それと*.csvkaiをパス結合する…

パスの結合と注意点

OSによって\\だったり\だったりする。 os.path.joinしたとき混ざってしまっていてエラーになることがある。 def asking_location():#保存先フォルダを選択 idir = '.' filetype=[("all file","*")] global path_loc path_loc = tk.filedialog.askdirectory(i…

ファイルの一覧を格納したリストの取得

def filename_get(): #フォルダ内のファイル名の一覧取得 #path=os.getcwd()+"\libra" global path_loc path_loc=Path.asking_location() files = os.listdir(path_loc) files_file = [f for f in files if os.path.isfile(os.path.join(path_loc, f))] 他 o…

tkinterでディレクトリを聞く方法

def asking_location(): main_win = tk.Tk() main_win.title("タイトル") main_win.geometry("400x300") label = tk.Label(text="コメント") message = tk.Message(text="コメント") label.pack() message.pack() idir = '.' filetype=[("all file","*")] gl…