- 1. [Python]内包表記のif文でelseの場合何もしない処理を入れたい時
- 2. Python
- 3. AOJ
- 4. Seq2Seq
- 5. それ,numpy で書かない?–5–
- 6. Transformer実装
- 7. インタラクティブ問題でpexpectがいい感じだった話
- 8. 【備忘録】PythonでMySQLのデータベースをマイグレーションする方法
- 9. トリボナビッチ数列
- 10. Python初心者の備忘録 #07 ~DSに使われるライブラリ編02~
- 11. Python学習1日目~基本的な文法~
- 12. LangChain “The model text-davinci-003 has been deprecated” に対応する
- 13. pythonの内包表記のメモ
- 14. ループメニュー1を解いていく5
- 15. 駄目グラフ003-2
- 16. 給湯リモコンのBGM機能で遊ぶ簡易音楽サーバーを作った話
- 17. 多重共線性の回避策
- 18. 多重共線性って,そんなに単純なものじゃない
- 19. LangChain Expression Language (LCEL) v0.1でRAGを実装してみる
- 20. ループメニュー1を解いていく4
[Python]内包表記のif文でelseの場合何もしない処理を入れたい時
## 本記事の目的
**内包表記の if 文で,条件に当てはまらない (else) の場合,何もしない処理 (pass)をしたい**例)
条件「偶数」の時,その数字をリストに格納し,
「偶数」でない場合 (else) ,何もしない (pass)“`Python
ans = [i if i % 2 == 0 else pass for i in range(10)]
# 下記のリストを作成したい
# [0, 2, 4, 6, 8]
“`実際にこれを実行すると以下のように怒られます.
“`Python
File ““, line 7
ans = [i if i % 2 == 0 else pass for i in range(10)]
^
SyntaxError: invalid syntax
“`「無効な文法です」と怒られました…
## 結論
「if」を for の前ではなく後ろに記述する.
“`Python
ans = [i for i in rang
Python
#配列
##検索
[find] .find(検索する文字列, 開始位置, 終了位置)
[rfind]…後から
該当文字列が見つかれば0から始まる文字列1を返す
無ければ-1を返す“`Python
s = “abcabcabc”
index = s.find(“b”)
“`##カウント
[count()]“`Python
s = ‘aaabbc’
print(s.count(‘b’)) #=> 2
“`##置換
[replace]“`Python
s = ‘Today is Monday.’
ss = s.replace(‘Monday’, ‘Sunday’) #=> ‘Today is Sunday.’
print(ss)
s2 = ‘Hello Hello’
ss2 = s2.replace(‘Hello’, ‘Bye’) #=> ‘Bye Bye’ 第三引数を指定しなければすべて置換される
print(ss2)
s3 = ‘World World’
ss3 = s3.replace(‘World’, ‘Hello’, 1) #=> ‘Hello
AOJ
# [プログラミング課題2020](https://kkuramitsu.github.io/myaoj/)
– 計算機数学I・II
– 数値計算法Ⅰ・Ⅱ
– データ構造とアルゴリズム
– 数理モデル# 先輩が選んだ簡単問題より
### (1) Hello World ([ITP1_1_A](http://judge.u-.ac.jp/onlinejudge/description.jsp?id=ITP1_1_A&lang=jp))
“`Python
print(“Hello World”)
“`### (2) xの3乗 ([ITP1_1_B](http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_B&lang=jp))
“`Python
x = int(input())print(x ** 3)
“`
– `x ** y` … $x^y$### (3) ワード ([Volume3_0335](http://judge.u-aizu.ac.jp/onlinejudge/de
Seq2Seq
# *NLP From Scratch : Translation with a Sequence to Sequence Network and Attention*
# このチュートリアルの目標
RNNを使用することでフランス語から英語に翻訳する– 英語とフランス語の翻訳ペアがタブ区切りで各行に一つずつ書かれたテキストファイル → リスト
– 入力文(フランス語)をエンコーダが読み取りベクトル化
– デコーダにおいて、重み付けをしたベクトルを使って出力文(英語)を生成する
– 学習データを準備してモデルのトレーニングを行う
– 実行中に残り時間や進捗状況を`print`する
– 損失値の配列をグラフ化し、視覚的に学習の効率や結果を判断する
– 入力文、ターゲット(翻訳ペアより)、出力を`print`し、主観的な品質判断を行う
– (Attentionの視覚化)# 事前準備
*In which two recurrent neural networks work together to transform one sequence
それ,numpy で書かない?–5–
## それ,numpy で書かない?–5–
Python ではリストがよく使われる。また,for ループが遅いのでリストに特化したリスト内包表記も推奨されることが多い。
それなりの根拠があるからではあるが…
課題:リストではなく一次元配列を使う
副次効果:他の部分のプログラムもシェープアップされる
以下の記事を素材とさせていただき,
https://qiita.com/Kazuma-Nakano/items/8294f96698e792614a9b以下のように書き換えてみる。
“`python
import numpy as np
import matplotlib.pyplot as pltdef plot(l_inf = 20, K = 0.3, color = “black”): # 繰り返し処理をまとめる
t = np.arange(0, 25, 0.1) # 簡単に,刻みを細かくできる
lt = l_inf*(1 – np.exp(-K*t)) # ベクトル演算できる(組み込み関数を使おう)
ax.plot(t, l
Transformer実装
# Tensor2Tensor
無理だった。“`
$ pip3 install tensorflow-gpu==2.1.0
# GPU対応のTensorflow$ pip3 uninstall tensorflow-addons
$ pip3 install tensorflow-addons==0.9.1$ t2t-datagen –data_dir=data/data1 –tmp_dir=tmp –problem=translate_jpen –t2t_usr_dir .
$ t2t-trainer –data_dir=data/data1 –problem=translate_jpen –model=transformer –hparams_set=transformer_base_single_gpu –output_dir=training_result1 –t2t_usr_dir=.
“`# Harvard
GPUを4つ使うので、`G.large`を借りる。
“`
qrsh -g gcc50582 -l rt_G.large=
インタラクティブ問題でpexpectがいい感じだった話
# とあるABC337にて
こんな問題が出てきました。https://atcoder.jp/contests/abc337/tasks/abc337_e
具体的な問題は実際に見てもらうとして、本題はこれが**インタラクティブ**問題だということです。
つまりコードテストにぶちこむだけでは合ってるかどうかすらわからない。これではペナりまくってしまう。
ですのでテスターをサクッと自作したいと思います# subprocessを使う
やばい、めんどい、使いたくない。
pipeとかを使えば行けるぽいですが、osレベルの話に関わってくるのでコンテスト中に作成するのは断念# pexpectを使う
subprocess以外に出てきたいい感じのやつです。
以下[ここ](https://pexpect.readthedocs.io/en/stable/overview.html)からサンプルコード
“`python
# This connects to the openbsd ftp site and
# downloads the recursive directory listing.
【備忘録】PythonでMySQLのデータベースをマイグレーションする方法
今回はPythonでMySQLのデータベースをマイグレーションする方法についてまとめました。
備考:
Python:3.9
MySQL:8.0.31
動作環境:MacOS
開発環境:PyCharmモジュール:
alembic
pytz
python-dotenv### 1. PyCharmにて新規プロジェクトを作成する
### 2. プロジェクト直下にmigration_database.py / env.py / .env / requirements.txt / database / database.py / models.pyを作成する
“`フォルダ構成.
.
├── main.py
├── migration_database.py
├── env.py
├── .env
├── requirements.txt
└── database
├── database.py
└── models.py
“`### 3. requirements.txtファイルを以下の内容にする
“`requirements.txt
alembic
pytz
トリボナビッチ数列
トリボナビッチ数列のプログラムをPython3で実装しました。
“`Python3
###########################
## トリボナビッチ数列
###########################トリボナビッチ関数
def tri_r(num):
if num <= 1: return 0 if num == 2: return 1 #再帰呼び出し return(tri_r(num - 1) + tri_r(num - 2) + tri_r(num - 3)) #トリボナビッチ数列の7番目の項を求める ans = tri_r(7) # 数字を表示 print(ans) ```
Python初心者の備忘録 #07 ~DSに使われるライブラリ編02~
# はじめに
今回私は最近はやりのchatGPTに興味を持ち、深層学習について学んでみたいと思い立ちました!
深層学習といえばPythonということなので、最終的にはPythonを使って深層学習ができるとこまでコツコツと学習していくことにしました。
ただ、勉強するだけではなく少しでもアウトプットをしようということで、備忘録として学習した内容をまとめていこうと思います。
この記事が少しでも誰かの糧になることを願っております!
**※投稿主の環境はWindowsなのでMacの方は多少違う部分が出てくると思いますが、ご了承ください。**
最初の記事:[Python初心者の備忘録 #01](https://qiita.com/Yushin-Tati/items/961dc47d6163f944f7e9)
前の記事:[Python初心者の備忘録 #06 ~DSに使われるライブラリ編01~](https://qiita.com/Yushin-Tati/items/5dcad7518a0f8a3fdbc1)
次の記事:まだ今回は**Pandas**についてまとめております。
**※D
Python学習1日目~基本的な文法~
### 引数
引数は関数を呼び出すための値
~~つまり関数は引数がないと動かない~~
→引数なくても動く関数は存在するので、ここは間違い
コメント参照### 戻り値
引数に呼び出された関数の実行結果の値## キーワード引数と位置引数
関数の中に複数の引数がある場合、どちらを先に書くかというのが決まっており、位置引数から記載を始める
~~~python:test.py
print(“Python”,end=”!”)
~~~
ここでは[end]が引数名になるので、引数名がある引数=**キーワード引数**となる
単純に値を渡すだけの引数は**位置引数**となる## ブロックコメントとインラインコメント
~~~python:test.py
# これはブロックコメントです
print(“Hello world”)print(“Hello world”) # これはインラインコメントです
~~~
インラインコメントは処理の横に空白を2個開けて、書き始める。
ただしインラインコメントはそこまで推奨されないので注意。どちらのコメントも**文末**までがコメント扱いとなる
##
LangChain “The model text-davinci-003 has been deprecated” に対応する
# 症状
以前、「LangChainをFastAPI経由でUnityで利用する」Pythonプログラムを書いて、Render.comで動かしていたのですが、気がついたら、以下のようなエラーが返るようになってしまいました。
> {“detail”:”The model text-davinci-003 has been deprecated, learn more here: https://platform.openai.com/docs/deprecations}
要は、「モデルが古いからもう使えないよ」ということですね。これを解決しました。かなりハマったので、誰かのお役に立てれば。ただし、「LangChainをFastAPI経由でUnityで利用する」方法には触れていません。
# やったこと
コードを次のように修正しました。修正部分は強調してあります。
“` python
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List
pythonの内包表記のメモ
Pythonの内包表記のメモを書きます。英語名で「List Comprehension」と呼びます。
s = [‘……’, ‘.#.#..’, ‘……’]
上記を、二次配列で表したいときのコードを書きます。
“`python
r = [[0 if v == ‘.’ else ‘#’ for v in row] for row in s]
“`
上記は下記の内包表記です。“`python
r = []
for row in s:
r2 = []
for v in row:
if v == ‘.’:
r2.append(0)
else:
r2.append(‘#’)
r.append(r2)
“`
メモとして残します。
ループメニュー1を解いていく5
https://paiza.jp/works/mondai/loop_problems/loop_problems__kuku_step2
### Python
“`py
N = int(input())
for i in range(1,10):
if i < 9: print(i * N, end=" ") else: print(i * N) ``` ### PHP ```PHP
“`
https://paiza.jp/works/mondai/loop_problems/loop_problems__pow2### Python
“`py
N
駄目グラフ003-2
## ダイナマイトプロットはやめよう
駄目グラフ003でも書いたのだが,それは簡単すぎたので,追加する。
ダイナマイトプロットとは,下図のようなものである。
「見本 図の描き方(良い図の例)」などと書いてあるが,見本でもなく,よい図の例でもない。そのような認識自体が誤りなのである。![スクリーンショット 2024-01-19 9.27.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/ed176a3a-226f-dc64-e1db-1d0525981746.png)
この図では棒の高さは割合であることはわかるが(たぶん),ひげ(エラーバー)が何を表すか明示されていないことすらある(割合だとして,ひげが 1 を超える意味は不明だろう)。
fig. 1 のエラーバーは棒の上側にしかないので,群を比較するときに不便であるということで,それよりはまし(?)な,fig. 2 のようなものもある。
この図では,エラーバーは「平均値±標準偏差」である。![output
給湯リモコンのBGM機能で遊ぶ簡易音楽サーバーを作った話
いま住んでいる家にあるお風呂の給湯リモコン(Rinnai)には3.5mmのステレオジャック(メス)がついており、これで音楽プレイヤーを繋ぐと入浴中にBGMを聴けるという代物でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409514/a89a58fe-ce64-2068-b521-7e8cfe925cb4.png)
(画像はhttps://rinnai.jp/products/waterheater/gas/remocon/ より)
スマートフォンやウォークマンを繋いでも浴室からは操作できないため、浴室からも操作したいと思い、せっかくなので音楽配信サーバーを作ってみました。## 構成
簡易サーバーは部屋に転がっていたラズパイに担ってもらいます。サーバーがHTTPリクエストを受けて、音楽をジャックから出力して、お風呂で再生されるという布陣でいきます。せっかくなのでブラウザから曲や再生/停止をコントロールしたい気持ちになってきたので、ラズパイにはWEBサーバーも兼ねてもらう
多重共線性の回避策
## 多重共線性の回避策
独立変数 $x_4$ が従属変数 $y$ に与える影響を知りたい。ほかの独立変数 $x_1$ と $x_2$ の間に多重共線性があるが,これはどちらも説明変数に含めたい。$x_1$ と $x_4$,$x_2$ と $x_4$ の相関は低く VIF も小さい。
このような場合にどうしたらよいかという質問に対して,シミュレーションに基づく解答を提示する。
以下では R の場合におけるプログラム例であるが,他の言語,パッケージでも追試可能である。変数間の相関係数行列は以下のような表のようになっていると仮定しよう。
“`R
r <- matrix(c( 1, 0, 0, 0, 0, 0.8, 1, 0, 0, 0, 0.3, 0.3, 1, 0, 0, 0.2, 0.2, 0.3, 1, 0, 0.3, 0.25, 0.3, 0.4, 1), byrow=TRUE, ncol=5) r <- r+t(r) diag(r) <- 1 names <- c(paste("$x_", 1:4, "$", sep=""), "$y$") colname
多重共線性って,そんなに単純なものじゃない
# 多重共線性って,そんなに単純なものじゃない
## 「独立変数間の相関係数に 0.8 を超えるものがあると多重共線性が生じる」というのは誤り
### 例1
相関係数の高いものばかりが含まれるデータで,重回帰分析を行う。
この記事では R による分析例を示すが,生データも書いておくので,各自常用の言語,パッケージで解析することもできよう。
サンプルサイズは,各自大きくしたり小さくしたり,自由に。使用するデータは以下の通り。
“`R
# install.packages(“MASS”)
“`“`R
library(MASS)
set.seed(123)
n <- 20 r <- matrix(runif(16, 0.8, 0.9), 4, 4) r <- (r+t(r))/2 diag(r) <- 1 d3 <- data.frame(matrix(mvrnorm(n, mu=rep(0, 4), Sigma=r, empirical=TRUE), n)) colnames(d3) <- c("y", "x1", "x2", "x3") d3 ```
LangChain Expression Language (LCEL) v0.1でRAGを実装してみる
# 概要
langchainのv0.1がリリースされたので、そのコア機能であるLCEL(LangChain Expression Language)の使い方を練習します。# 練習テーマ
選択肢問題をGPTに直接解かせたり、RAGで解かせたりしてみます。# データセット
[JAQKET: クイズを題材にした日本語QAデータセット](https://www.nlp.ecei.tohoku.ac.jp/projects/jaqket/)のvalidationを使います。
huggingfaceからダウンロードします。“`bash
pip install datasets
“`“`Python
from datasets import load_datasetdataset = load_dataset(“kumapo/JAQKET”, name=”v1.0″, split=”validation”)
“`中身を確認してみます。
“`Python
QUESTION_NUM = 10
subset = dataset.select(range(QUESTION
ループメニュー1を解いていく4
https://paiza.jp/works/mondai/loop_problems/loop_problems__seq_reverse
### Python
“`py
N = int(input())
A = list(map(int,input().split()))
# reversed関数を使うなら
print((*reversed(A)),sep=”\n”)
# for文を使うなら
for i in range(N-1,-1,-1):
print(A[i])
“`### PHP
$Aはtrimしないと後ろに改行がくっついたままexplodeしてしまうので注意。“`PHP
=0; $i–){
print($A[$i] . “\n”);
}
//reverse関数を使うならこれでも。でもぶっちゃけ上の方が早い
$A =