Python3関連のことを調べてみた

Python3関連のことを調べてみた

Pythonの管理にRyeをおすすめしたい

Linux上でPythonをインストールするのってめっちゃ面倒くさいですよね。
Ryeを使えばPythonのインストールからバージョンの管理・変更、パッケージ管理がノンストレスでできちゃう!
# Ryeって何( 簡単に )
RyeはPython用の包括的なプロジェクトおよびパッケージ管理ツール。Pythonのインストール、プロジェクト・依存関係・仮想環境の管理を爆速で統合的に行える。
# インストール方法
Linuxにおいてのインストール方法。
以下を実行するだけ [Installation – Rye (rye-up.com)](https://rye-up.com/guide/installation/)
“`bash
curl -sSf https://rye-up.com/get | bash
“`

## 尋問される
インストール過程でいくつか質問される。

“`bash
? What should running `python` or `python3` do when you are not inside a Rye managed project? ›
❯ R

元記事を表示

便利な開発環境設定とショートカット【Win11 / VSCode / Python】

# はじめに (経緯と目的)
こんにちは、 @yomo93 です。
私の研究室では私を含む全ての所属学生がPythonによって研究・開発に取り組んでいます。例年、新規で配属される学生はPythonに慣れていないことが多いので、研究室全体の開発環境は[WinPython](https://winpython.github.io)または[Anaconda](https://www.anaconda.com/download)が推奨されてきました。
しかし、今年は方針転換があり、推奨エディタを[VSCode(Visual Studio Code)](https://code.visualstudio.com/download)にすることになりました。
そこで、研究や[お笑いWebサービス 「Tendon」](https://tendon-psi.vercel.app)開発[^1]でVSCodeを使用してきた私が**おすすめの拡張機能等を研究室のメンバー向けに紹介しよう**と思います。ただ、私も何気なく使っていたり、この記事を書くにあたって発見したものも多かったため、探り探りの部分があることも

元記事を表示

深さ優先探索と幅優先探索で辞書データの構造解析

外部のオープンデータを活用する上でWebAPIを活用することは多いと思います。特にその中ではJSONやXMLが多く、PythonでJSONやXMLを利用する際には辞書形式に直して活用します。
※なお、幅優先探索については深さ優先探索を作った後にChatGPTに教わって作りました
# 深さ優先探索の関数
第一引数は辞書データ、第二引数は文字列として初期値は何も入っていませんが、辞書に使う変数名を入れるとその後辞書をピンポイントで必要な所をコピーペーストする時に便利なので辞書に使う変数を第二引数に入れて関数を使うことをお勧めします。
“`Python3
def depth(jsn, var=””):
if isinstance(jsn, dict):
for row in jsn:
depth(jsn[row], var=var+”[\””+row+”\”]”)
elif isinstance(jsn, list) and jsn != []:
for i in range(len(jsn)):

元記事を表示

質的変数を利用した効果検証

※Qiita初心者でこれが初投稿なので温かく見守ってください

使用するのはJupyter Notebookです。
やる内容としては該当する質的変数が評価する項目にどのような影響を与えているかになります。
# 手順
## ライブラリの読み込み
必要なのは「Pandas」と「matplotlib」になります。
“`Python3
import pandas as pd
import matplotlib.pyplot as plt
“`
基本的にはExcelでデータは見れますが一応データの冒頭を出力します。
今回はCox比例ハザードモデルのライブラリであるlifelineというライブラリにある白血病のデータをCSVにしたものを読み込みます。
“`Python3
df = pd.read_csv(“leukemia.csv”)
df.head()
“`
## 質的変数と評価する変数の名前を定義
次にどの変数を用いて評価・効果検証をするかを決めます。
“`Python3
columns = [“status”, “sex”, “Rx”]
y_name = “logWBC”
“`

元記事を表示

ARC150 B – Make Divisible

公式解説に載っていなかったので。多分邪道で、公式解説の方が普通に筋がいいと思います。

# 問題
https://atcoder.jp/contests/arc150/tasks/arc150_b

## 概要
* $T$件のテストケースについて、以下の問題を解け。
* 正整数$A,B$が与えられる
* 非負整数$X,Y$で、$B+Y$が$A+X$の倍数となるようなものについて、 $X+Y$の最小値を求めよ。

## 制約
* $1 \leq T \leq 100$,
* $1 \leq A, B \leq 10^9$.

## 解説
まずは $A \geq B$の場合について。これは簡単で、$B$が$A$に等しくなるように$Y=A-B$とし、$X=0$としたときが$X+Y$が最小になる。ほとんど自明だが、$X > 0$と仮定すると $A \geq B$より $A+X > B$. このとき、$Y$を最小にするには $A+X=B+Y$として1倍の倍数にするほかないが、この時$Y=A+X-B$となり明らかに当初の$X=0$としたときの$Y=A-B$よりも大きくなってしまう。

元記事を表示

FastAPIの認証(HTTPBearer)を開発環境でのみバイパスする

こんにちは、[わいけい](https://twitter.com/yk_llm_gpt) です。

突然ですが、私は日々FastAPIを使った開発をしているのですが認証周りで時々面倒を感じることがあります。

それは、**せっかくFastAPIがOpenAPI形式の動的ドキュメント(Swagger UI)を自動生成してくれているのにも関わらず、ログインが必要なエンドポイントに関しては毎度認証トークンを取得しないと叩くことが出来ない**ということです。

セキュリティ上「まあ、それはそうだよね」という話ではあります。  
が、ローカルでコンテナ立てて開発しているときには地味に面倒なのもまた事実です。

長期的に開発を続ける想定であれば、開発チーム全体で何千回もローカル環境でのログイン&トークン取得を行うことになることが予想されます。
これは開発効率の観点からあまり好ましくなさそうだと私は思いました。

そこで今回は開発環境でのみ良い感じに認証をスキップする実装を行ってみました。


私のSNSアカウント等です。
今後もPython・LLM・Go・Web開発などのト

元記事を表示

sphinx 記述方法

前回はドキュメント作成し記述できる状態まで出来たので今回は記述方法を学んで行こうと思います。


### 参考記事

https://zenn.dev/y_mrok/books/sphinx-no-tsukaikata/viewer/chapter10


### 第一歩目
まずは目次を作成し見出しに番号を振る

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/866385/179bf0fc-eb1a-71a4-0c35-92aa53971606.png)

##### 拡張子は省略できる
“`
#index.rst
.. VBA_Documents documentation master file, created by
sphinx-quickstart on Wed Apr 17 08:57:49 2024.
You can adapt this file completely to your liking, but it should at least

元記事を表示

sphinxでドキュメント作成(WIN10)

### 使用背景
プロジェクトでメンバーに情報共有用に「sphinx」が便利そうだので使ってみました。
OSはWindows10を使用


### 参考記事と公式サイト
https://qiita.com/kinpira/items/505bccacb2fba89c0ff0

https://www.sphinx-doc.org/ja/master/index.html


### PowerShell を起動し、sphinxをInstall
“`
pip install sphinx
“`
Successfully installed と表示されればOK

### プロジェクトフォルダを作成し、プロジェクトフォルダに移動する
“`
mkdir test
cd test
“`
### プロジェクトの作成
“`
sphinx-quickstart
“`
yを入力して進む
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/866385/337eefb2-84bc-edce

元記事を表示

pythonでImportErrorが出た!

pythonファイルを実行した際に…

“`
ImportError: cannot import name ‘VisibleDeprecationWarning’ from partially initialized module ‘numpy’
“`
翻訳
ImportError: 部分的に初期化されたモジュール ‘numpy’ から名前 ‘VisibleDeprecationWarning’ をインポートできません

# 解決
参考

https://qiita.com/7shi/items/9c15e2aca88bd40eed2a

パッケージからnumpyをimportするはずが、自分自身のファイル「nampy.py」 をimport してしまったのが原因と思われる。

名前を「num.py」に変更して実行した結果、エラーは出なくなった!

元記事を表示

平方分割

https://paiza.jp/works/mondai/query_primer/query_primer__square_division

コメントで教えてもらった方法を元に
下記のようにしました。
ただ、合わなかったけど。

“`py

K = int(input())
A = [int(input()) for _ in range(10000)]
ans = []
for i in range(0, 10000, 100):
ans.append(max(A[i:i+100]))

for _ in range(K):
minX,maxY = map(int,input().split())
minX = int(minX ** 0.5)
maxY = int(maxY ** 0.5)
print(max(ans[minX:maxY]))

“`
結局わからなかったのでタイムオーバーしたのでギブアップ。
どうやら後半考え方が間違っていたようで。。。
いや、どうやって調べようと思ってたが、よく考えたら100(N0.5乗)で割った商

元記事を表示

【Python】S3の署名付きURL発行時にダウンロード時のファイル名を指定する方法

[ドキュメント](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html) にもやり方が書いていないので残しておきます。

Paramsパラメータに `’ResponseContentDisposition’: f”attachment; filename = ファイル名”` を設定します。
※ ファイル名をURLエンコードするのを忘れないように注意。

“`python
from urllib.parse import quote
filename = quote(“サンプルファイルだよ.txt”) # ファイル名をURLエンコード

presigned_url = s3_client.generate_presigned_url(
ClientMethod = “get_object”,
Params={
“Bucket”:get_env().output_app_bucket,
“Key”:os.path.join(

元記事を表示

特殊な条件下でのハイ&ローゲーム(Hi-Lo)を行うAIモデル

# 目次

1.ハイ&ロー(Hi-Lo)とは何か
2.使用したライブラリと手法
3.今回の特殊な条件
4.Q学習のプログラム
5.今後の展望

※ミスなどがありましたら報告願います
# 1. ハイ&ロー(Hi-Lo)とは何か
ハイ&ローは、トランプを用いるカードゲームで、名前の通り、高い(high)か低い(low)かを当てる単純なゲームです。
単純なだけに細かい所で色々ルールが派生したり違ったりすることもあります。
最近では、オンラインカジノサイトなどで有名なため、知っている方も多いと思います。
今回は、オンラインカジノでのハイ&ローのルールを採用していきます。
### 手順
1.jokerを除いた52枚のトランプをよくシャッフルし、山札を裏向きにしておく
2.ディーラーが山札の一番上を表にして前に置く
3.プレイヤーは次に山札から出るカードが今開示されているカードより高い(high)か低い(low)かを予想する
(カードの大きさは、小さい順に2,3,4,5,6,7,8,9,10,J,Q,K,A)
4.ディーラーは伏せられていたカードを開示する
5.(1)予想が正しかった場合は、オッズ

元記事を表示

『モデルベース深層学習と深層展開』読み会レポート#1

$\def\bm{\boldsymbol}$
# 概要
– オンラインで開催している[『モデルベース深層学習と深層展開』読み会](https://majime-ni-study.connpass.com/event/)で得られた知見や気づきをメモしていく
– ついでに、中身の理解がてらJuliaサンプルコードをPythonに書き直したコードを晒していく
– 自動微分ライブラリにはJAXを使用する

# 第1回
## 大まかな内容
– 深層展開とは
– アイデアの中核
– 深層展開とモデルベース深層学習の関係
– 深層学習の基礎技術の理解
– MLPの数式理解
– ミニバッチ学習法、確率的勾配法、誤差逆伝搬法
– 自動微分と計算グラフの理解
## 議論になったこと
### 1.3.2節 あたり
– モデルベースでやれるなら、それで済まないのか
– ->どんなにうまくやってもモデル化誤差が残る。また、経年劣化等で真のモデルも変化する。
– 深層展開では式の形を作ることに相当することもできるのだろうか
– ->学習対象のパラメータの設計

元記事を表示

ABC349(Atcoder Beginner Contest)のA~E(A,B,C,D,E)問題をPythonで解説(復習)

# ABC349(Atcoder Beginner Contest)のA~E(A,B,C,D,E)問題をPythonで解説(復習)

# A問題
– 全員の持ち点の合計は`0`で不変である.
– 当然,引き分けたときは,不変である.
– 勝敗が生まれたときは,誰かが`1`点を得るが,誰かが`1`点を失う.だから,全員の合計点は不変.
– 入力で`N-1`人の点数の合計が分かっていれば,それをマイナスさせた値が答えである.
– (補足)最初の標準入力の`N`は今回は参照しません.
“`A.py
“””
<方針>
– 全員の持ち点の合計は`0`で不変である.
– 当然,引き分けたときは,不変である.
– 勝敗が生まれたときは,誰かが`1`点を得るが,誰かが`1`点を失う.だから,全員の合計点は不変.
– 入力で`N-1`人の点数の合計が分かっていれば,それをマイナスさせた値が答えである.
– (補足)最初の標準入力の`N`は今回は参照しません.
“””

# 標準入力を受け取る.
N = int(input())
A = list(map(int, input().spl

元記事を表示

sklearn.tree.DecisionTreeRegressorのデフォルト実装

# この記事の内容
scikit-learn の Decision Tree について説明します。
デフォルトの学習/推論/特徴量重要度算出アルゴリズムはできるだけ詳しく説明しましたが、それ以外の内容(パラメータやアトリビュート、使用上の注意など)にはあまり触れていません。
より詳しく知りたい方は末尾の参考文献(scikit-learnのドキュメント)をご覧ください。
# 木構造
まず用語の説明をします。
文献によって使われる用語は微妙に異なりますが、この記事では以下の用語で説明をします。

木(有向木)とはノードとパスを持つ以下のような構造の事を指します。
![スクリーンショット 2024-01-23 21.36.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1625730/932e1620-47db-8762-f003-073ced8da1ad.png)
根から順番に枝分かれをしていき、末端のノードを葉と呼びます。
各パスに対して、パスの根本を親ノード、行き先を子ノードと呼びます。

木構造

元記事を表示

ABC349 with Python (A~E)

ABC349のA~E問題をpythonで解説していきます。

# A – Zero Sum Game
## 問題
$1$ から $N$ の番号が付けられた $N$ 人の人がおり、この中で一対一の勝敗のつくゲームを何度か行いました。$N$ 人は最初にそれぞれ持ち点として $0$ を持っており、各ゲームでは勝者の持ち点が $1$ 増え、敗者の持ち点が $1$ 減ります(持ち点が負になることもあります)。最終的に人 $i\ (1\leq i\leq N-1)$ の持ち点が $A_i$ になったとき、人 $N$ の持ち点を求めてください。なお、ゲームの進行によらず最終的な人 $N$ の持ち点は一意に定まることが示せます。

https://atcoder.jp/contests/abc349/tasks/abc349_a
## 考察
各ゲームを終えた後、勝者の持ち点が1増え、敗者の持ち点が1減るため、すべての人の持ち点の合計は必ず0になっています。したがって、$\sum_{i=1}^N A_i = 0$より、$A_N = -\sum_{i=1}^{N-1} A_i$で求まります。
## コード

元記事を表示

[Python] 関数の引数に関数を渡す際の注意点

# 結論から言うと...
関数の引数に関数を渡した場合,実行時間が増えることがわかった(自明な気もするが).

特にループ処理内で 

“`
FUNCTION(function, a, b, c…)
“`
の形を作ると,実行時間に大きな差が生じるので注意が必要.

# 検証方法
以下のコードを実行した
“`python
import time

#足し算の関数
def my_add(a,b):
return a+b

#関数my_funcを受け取り,my_func(x,y)を返す関数
def arg_func(my_func,x,y):
return my_func(x,y)

#2数の和を返す関数
def no_arg_func(x,y):

return x+y

sum1=0
sum2=0

start1=time.time()
for i in range(1000):

sum1=arg_func(my_add,sum1,1)

end1=time.time()

start2=time.time()
for j in

元記事を表示

[Django] カスタムユーザーモデルを使ってみる

## はじめに
自分用の個人開発のメモ/備忘録として記録していきます。

## 環境
django5.0
↓ dockerでの開発環境作成はこちら

https://qiita.com/mkthrkw/private/588226d30690c707d2b8

## やりたいこと
E-mailとPasswordでの認証に変更し、IDをULIDへ変更したい。

## ULIDについて
UUIDと同様に一意性保証されていて、生成時刻のミリ秒単位で時系列ソートが可能なULIDを選択

https://qiita.com/sotaheavymetal21/items/ef05372462dd79086a57

## パッケージインストール

“` pip install ulid-py “`

https://pypi.org/project/ulid-py/

“` django-ulid “`を使おうと思ったが、フィールドを
“` ULIDField(default=default, primary_key=True, editable=False) “`
にするとなぜか “

元記事を表示

Docker × Django 開発環境作成

## はじめに
自分用の個人開発のメモ/備忘録として記録していきます。

## 環境
docker desktop
windows 11

## やりたいこと
Django開発環境をdocker上に作成したい。
最小限の構成とし、必要に応じて修正していく。

## ディレクトリ
プロジェクトディレクトリを任意の場所に作成。
docker関連のファイルとその配下にsrcディレクトリを作ることにした。
“`
project directory
│ .env
│ docker-compose.yml
│ Dockerfile
│ requirements.txt
└─ src
“`

## 必要ファイルを準備

### envファイルを作成
envファイルにてホスト側のディレクトリやポートを指定。
ポートは他コンテナと重複しないものを設定する。
“` :.env
# Directory
HOST_WORKDIR=./src

# Python version
PYTHON_VER=3.12-slim-bullseye

# Port
APP_HOST_PORT=8888

元記事を表示

MacでのPython2、Python3の話

macOSでは、標準でPython 2がインストールされていますが、最新のmacOSバージョンではPython 2は廃止され、Python 3が推奨されています。そのため、Python 3を使う場合は通常`python3`コマンドを使用します。`python`コマンドを使用するとPython 2が実行されるため、エラーが発生します。

もし`python`コマンドを使用してPython 3を実行したい場合は、以下のいずれかの方法でPython 3をデフォルトのPythonに設定することができます。

1. **シンボリックリンクの変更**: Python 3の実行ファイルを`python`という名前のシンボリックリンクに設定します。

“`bash
sudo ln -sf /usr/bin/python3 /usr/bin/python
“`

これにより、`python`コマンドがPython 3を実行するようになります。ただし、システムの動作が変更されるため、注意して使用してください。

2. **zshの設定変更**: zshの設定ファイル(通常は`~

元記事を表示

OTHERカテゴリの最新記事