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

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

Python 自身のファイルのディレクトリパスを求める

## コード

“`python
import pathlib

# このファイルのディレクトリパス
myDirPath = pathlib.Path(__file__).parent
# setting.json
setting = myDirPath / ‘setting.json’
“`

元記事を表示

【超初心者向け】 VSCODE で Python をテストしたときに起こる「カレントズレ」の対処法

Pythonプログラムをファイルに書き込んでテストする際
「 ***実行パスがファイルのある場所と違う*** 場合」に起こる不具合の対処法です。

# 不具合の例
* `open()` を使用するなどしてファイルを操作する場合に、
ファイルを使用できない。あるいは、書き込み時にエラーを吐く。
* `import` を使用して自作のpythonファイルを呼び出そうとするが
読み込まれない。
* 上記いずれかが **VSCODEのみ** で発生する

# 原因と対策
**VSCODE** では
「**Python を実行しているフォルダ**( 以降 **カレント** と呼ぶ )」が
「**Python の実行ファイルのあるフォルダ**( 以降 **ファイルパス** と呼ぶ )」と違う場合があります。

“`
[ディレクトリ構造の例]

root/
┣━ フォルダ1/ #カレント
┗━ フォルダ2/ #ファイルパス
┣━ 実行ファイル.py
┣━ module.py
┗━ example.txt
“`

この**ファイルパス**と**カレント**が

元記事を表示

ツリーの4つの可視化方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/986141/1b9c92a6-ece6-fe80-07cd-d6bb307ec056.png)

# ツリー構造の4つの可視化方法
ランダムフォレストやXGBoost、決定木分析をした時にモデルのツリー構造を確認します。決定木の大きさやデータによって描画の仕方に使い分けができるので、それぞれまとめました。

**💡この記事で紹介すること**

:::note info
1. **tree.export_text**でテキスト描画
1. **tree.plot_tree**を使う
1. **graphviz**を使う
1. **dtreeviz**でヒストグラムや円グラフも追加
:::

# ツリーの可視化

Kaggleの**Spaceship Titanic**を題材にします。

https://www.kaggle.com/competitions/spaceship-titanic

このコンペは乗客が異次元に転送されたかどうかを推

元記事を表示

ABC355 C問題復習

## はじめに

ABC355(2024年5月25日開催)にてC問題がAC出来なかったので、立てた方針と目指すべきだった解答を整理する。
アウトプットが目的のため最低限の記述のみを行う。
使用言語:Python

## 対象の問題
https://atcoder.jp/contests/abc355/tasks/abc355_c

## 試験時間に試したこと、思ったこと
・とりあえずN=5で数字を並べてみる
“`text:5×5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
“`
・規則的に並んでいることは分かった
・「ビンゴを達成」をうまく言い換えることができない(入力値をそのままリストに格納してどうにか~とか考えていた)
・斜めの値はどうやって判定するんだろう

## 気づくべきだった点
#### ・座標平面を考える
入力値(以下Aとする)に対して、x座標はAをNで割ったあまりを、y座標はA/Nの整数部分をそれぞれ求めることで算出できる。
式としては
x = A %

元記事を表示

pythonでrtmpクライアントを作り生成映像・音声をリアルタイム配信

動画配信をプログラムで生成したい。それもリアルタイムで。
そう考えたとき、一番簡単なのかhlsで配信を行う方法。
この場合、一端rtmpでサーバに打ち上げる必要がある。
打ち上げにはffmpegを利用するが、コイツがなかなか思ったように動かないし、copilotも正解を教えてくれないし、世の中にサンプルもなかったので、とりあえず動作できるようにしたメモ。
説明は詳細はかかないでコードみて。という自分の備忘録的記事です。

:::note warn
python歴は限りなく短いのでpython的なコードでなく古来の手続き型な書き方になっているのはご容赦いただきたく。classでかっこよく実装しようとしたけど無理だった。
:::

# ○サンプルコードを動かすために必要なライブラリ

導入不要なもの以外はpipでインストールがあらかじめ必要です。ここら辺いじる人ならすでに入っている物ばかりだと思います。導入不要とかいてあるものは、インストール不要で最初から入っているライブラリだと思っていますが、クリーンインストールはずいぶん前のことなので覚えてません。間違ってるかも。

・opencv

元記事を表示

【django】チュートリアルわかりにくい!~チュートリアル1 はじめてのビュー作成編~

“`python:polls/views.py
from django.http import HttpResponse

def index(request):
return HttpResponse(“Hello, world. You’re at the polls index.”)
“`

とチュートリアルには書いてあるけど、自分のファイルには、

“`python:polls/views.py
from django.shortcuts import render
# Create your views here.
“`

って書いてある。

`from django.shortcuts import render`
は、必要なの?必要じゃないの??

初心者とまどう…。

結論、**必要**

こちらの方が丁寧に解説してくださっていたので、ありがとうございました。
「[djangoチュートリアルがわからない人のための読むと勇気が出るポエム①]」(“https://qiita.com/ricky-sensei/items/42dc10dfd560b92a56

元記事を表示

Amazon Linux2023にpyenvを利用してpython3.12をインストール

# pyenvのinstallのドキュメントがややこしい
基本はpyenvのドキュメントを見れば良いのですが、ぱっと理解できずまとめておきます

https://github.com/pyenv/pyenv?tab=readme-ov-file#getting-pyenv

## EC2のスペック
最初スペックがいらないのでt3.nano、EBS8GBでインストールしようとしたのですがメモリ・ストレージ(tmpディレクトリ)が足りなくてインストールできなかったので今回はt3.small,16GBでインストールしています。

## 手順

1\. 事前に必要な開発ツールをインストール
“`shell
# pyenvに必要なものをinstall
sudo yum groupinstall “Development Tools”
sudo yum install -y bzip2-devel ncurses-devel libffi-devel readline-devel openssl-devel zlib-devel
“`

2\. pyenvのインストール
“`shell
cu

元記事を表示

ドラクエ2のふっかつのじゅもんの仕組みを全解説

この記事では、ドラクエ2のふっかつのじゅもんの仕組みを完全解説しています。
全て読めばプログラムを組んだりできるように、順を追って丁寧に説明しました。

:::note warn
ドラクエ2のネタバレを大いに含みます。
:::

▼YouTubeでゆっくり解説してます

Python を使ったサンプルプログラムも用意しています。より詳細に知りたい場合は参考にしてもらえればと思います。

:::note info
サンプルプログラム(Google Colaboratory)
[ドラクエ2 ステータス→じゅもん](https://colab.research.google.com/drive/14cuBLcPAXwyZLy8EgpcyiwKAy5qLCnIf?usp=sharing)
[ドラクエ2 じゅもん→ステータス](https://colab.research.google.com/drive/1vM2scMQG58dpjpPhcbwEMQWL-AsYdhQo?usp=sharing)
:::

参考サイト(元ネタ)は

元記事を表示

[Python]入力リダイレクトとpdbデバッガとの併用

# 結論
pythonで入力リダイレクト(ex. `python main.py < input.txt`)とpdbデバッガを併用するには、`sys.stdin = open('/dev/tty', 'r')`を使用する。 ```python sys.stdin = open('/dev/tty', 'r') import pdb; pdb.set_trace() ``` # 内容 AtCoderなどでpythonスクリプトが入力を受け取る際、入力をtxtファイルに記述して実行時にリダイレクトすると便利だが、pdbデバッガと併用すると以下のようにエラーが発生する。 ```txt:input.txt 10 ``` ```python:main.py N = int(input()) print(N) import pdb; pdb.set_trace() ``` ```bash python main.py < input.txt ``` ```bash 10 --Return-- > /app/tmp/main.py(3)()->None
-> import pdb;

元記事を表示

Power Automate Desktopでpyファイルを実行

# 書いた背景
Power Automate DesktopでWebスクレイピングや、文字列処理をしたいとき組み込みの関数では工数が多いor実現できないことが多い。
「pythonを実行する」アクションではpython2しか使用できず、モジュールのimport設定も面倒

# 解決策
DOSコマンド実行、からpyファイルを実行する

# 引数無し
## シンプル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2150464/71704bcd-6133-30b8-bf09-0a936510a61d.png)

“`python:1.py
print(“test”)
“`

– .pyファイルとそのファイルが存在するフォルダを指定して実行
– print文で記載した内容が`CommandOutput`に文字列として格納されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215046

元記事を表示

ファイル形式を変換するデスクトップアプリ

# ファイル形式を変換するデスクトップアプリ

### はじめに
備忘録です。数年前に作ったコードで、とても汚いので戒め的な意味もあります。

## ソースコード

“`python:henkan_meijin.py

import os
import wx
import time
import ffmpy
import ffmpeg
j1 = os.path.dirname(os.path.abspath(__file__))

class FileDropTarget(wx.FileDropTarget):
def __init__(self, window):
wx.FileDropTarget.__init__(self)
self.window = window #ファイルをドロップする対象

def OnDropFiles(self, x, y, filenames):
for file in filenames:
self.window.box.SetValue(file)

元記事を表示

[Python]2次元配列の初期化

# 結論
pythonで2次元配列を初期化する場合は*演算子ではなくforを使用する。
“`python
# X
lst2d = [[0] * 3] * 3
# O
lst2d = [[0] * 3 for i in range(3)]
“`

# 内容
listの初期化時に*演算子を使用すると、任意の長さで配列を初期化できる。
“`python
lst1d = [0] * 3
print(lst1d)
“`
“`
[0, 0, 0]
“`

2次元配列で*演算子を使って初期化すると、[1][1]に値を代入した時に[0][1]や[2][1]にも同じ値が入ってしまう。
“`python
lst2d = [[0] * 3] * 3
print(lst2d)
lst2d[1][1] = 1
print(lst2d)
“`
“`
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]
“`
*演算子は指定した要素を複製する。
そのため`[0] * 3`は0を3つ複製し、長さ3の整数配列([0,0

元記事を表示

[Python]for文のループカウンタ

# 結論
forループでループカウンタを変更しても、次の繰り返しには影響しない。
ループカウンタを変更するループ文を書くにはwhileを使う。
# 説明
for文の中でi(ループカウンタ)を変更するコードを書く。
“`python
for i in range(5):
print(i)
if i==1: i+=2
“`
i==1の時にi+=2しているため、出力は0,1,4を期待するが、
“`bash
0
1
2
3
4
“`
となる。
iは同じ変数を使用しているのではなく、繰り返し時にrange(5)=[0,1,2,3,4]から取得しなおしているため、ループ内で変更しても次の繰り返しには影響しない。

ループ内でカウンタを変更するコードを書くには、forではなくwhileを使用する。
“`python
i = 0
while i < 5: print(i) if i == 1: i+=2 i+=1 ``` ``` 0 1 4 ```

元記事を表示

Pythonのforループでlistを特定の回数回す方法

# Pythonのループの書き方

リストの全要素に対して、ループを回すとき。

“`
list = [1,2,3,4,5,6,7]
for num in list:
print(num)
“`

リストの特定の範囲に対して、ループを回すとき。

“`
list = [1,2,3,4,5,6,7]
for num in list[0:3]:
print(num)
“`

リストで特定の回数、ループを回すとき。
“`
list = [1,2,3,4,5,6,7]
for num in range(4):
print(num)
“`

元記事を表示

初学者にも分かる Python のインストール方法(macOS向け)

## この記事で分かること
この記事を読めば、
– pyenvを使ってPythonを自身のPCにインストールする方法
– シェルで`python`コマンドを使えるようにする(パスを通す)方法

が分かります!


~~~
動作環境
macOS 14.5
Homebrew 4.3.2
pyenv 2.4.1
~~~

## 本題

### 1. Pythonをインストールする

Pythonをインストールする方法は、大きく分けて次の2種類あります。
– Python公式サイト(https://www.python.org/downloads/source/ )から直接インストールする
– **pyenv**というツールを使ってインストールする

本記事では、後者の**pyenvというツールを使ってインストールする方法**を解説します!

pyenv(https://github.com/pyenv/pyenv )は、Pythonのバージョン管理を行ってくれる便利なツールです。
このツールを通してPythonをインストールすることで、状況に応じて様々なバージョンのP

元記事を表示

0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 == 1.0 の結果は?

# はじめに
競プロの問題をPythonで解いているときに何気なくWhile文を使って書いていたら`とあること`が起きてしまった.

# 事象確認
Pythonで以下のようにコードを書いたとしよう.
“`py
x = 0.0
while x != 1.0:
print(“OK”)
x += 0.1
“`
OKは何回出力されるだろうか?

ではこの出力結果はどうか?
“`py
0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 == 1.0
“`

一度結果と根拠を考えてからスクロールしてほしい,どのようになるかな?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

結論を言うと結果は以下のようになる.
OKの数は,
“`
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
.

元記事を表示

PythonでBacklogAPIを使ってみた

# はじめに
最近、PythonでBacklogAPIを使用して簡単なアプリを作りました。
次にBacklog APIを使用するときや、他の人も使用できるようにメモ程度にまとめます。

# APIの使用方法
Backlog APIは2種類の認証と認可の方法が存在しています。
+ Backlogユーザ毎に発行されたAPIKeyを使用する方法
+ OAuth2.0を用いて取得したAPITokenを使用する方法

今回はAPIKeyを使用した方法を紹介します。

### API Key
APIKeyはユーザーの設定画面から取得することができます。
個人設定 -> API -> 登録
![Backlog_API.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2603981/341d2c4d-0d1d-72ab-3686-98b7ae89c4bc.png)

登録ボタンを押下すると、APIキーを発行することができます。こちらのAPIKeyを使用して、BacklogAPIを利用することができます。

### スペー

元記事を表示

反実仮想で、あったかもしれない世界を

因果推論もとい因果関係を考察する上で必要になるのが「そうじゃなかった世界」というものです。
もちろん機械学習モデルにランダムな値を入れる事で実現できる可能性もありますが、例えば変数間の関係性(多重共線性など)やその他色々あって簡単に代入できるものではありません。
そこで、反実仮想のdice_ml(DiCE)を使います。
使用するデータはCox比例ハザードモデルのライブラリにある追跡データのrossiです。
各変数については以下のようになっています。
参考 Pythonで生存時間解析 〜Cox比例ハザードモデルの解説と実装〜

https://qiita.com/roki18d/items/b9aef6e3891e5b3a1f7b

<

Python3 株価データ取得

### 概要
“`
株価データとそのグラフが含まれたExcelファイルが生成されます。
“`

### 詳細
“`
1
必要なライブラリをインポートします。これには、データのダウンロード(yfinance)、データの操作とグラフの作成(matplotlib.pyplot)、Excelファイルの作成(openpyxl)が含まれます。

2
yfinanceを使用して、指定した銘柄コード(この場合はトヨタの”7203.T”)の過去6ヶ月間の株価データをダウンロードします。

3
ダウンロードしたデータをコンソールに表示します。

4
matplotlib.pyplotを使用して、ダウンロードしたデータから終値の折れ線グラフを作成し、画像ファイル(graph.png)として保存します。

5
openpyxlを使用して新しいExcelワークブックを作成します。

6
ダウンロードしたデータをExcelの”Data”シートに書き出します。

7
作成したグラフの画像を新しい”Graph”シートに追加します。

8
作成したExcelワークブックをtoyota_stock_data.xls

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

$\def\bm{\boldsymbol}$

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

# 第3回
## 大まかな内容
– 勾配法に深層展開を適用する方法について
– 停留点への高速な収束を実現するのに最適なステップサイズ系列を深層展開を用いて獲得する
– 今後の教科書に出てくる問題設定の多くに共通の”問題アンサンブル”の概念について
– 特定のひとつの最適化問題の解を導くのではなく、ある分布に従って生成される問題集合について、解の誤差の期待値を最小化していくというスタンスで考える
## 議論になったこと
### 3.1.1節 あたり
– 一次元探索技法というのは、具体的にはAdam法とかモメンタム法とか?
– ->結論出ず
### 3.1.2

変数名 内容
week 釈放後の最初の逮捕までの週数、または打ち切り