- 1. Pythonで動画から音声を抽出する
- 2. 使いどころがやっと分かった!GitHub Copilotとのアプリ開発奮闘記
- 3. PythonでABC337を解いてみたよ。(A~E問題)
- 4. Python 辞書
- 5. 手軽なWSL2環境でのpyenv導入 – Windows側のpyenvとの衝突回避
- 6. Pythonだとメソッドからクラス変数を定義できる?
- 7. LOOPだけで円周率を計算する
- 8. 新職場に来て2週間経った。
- 9. 『時系列分析と状態空間モデルの基礎』をPyStanで実装した(第6部4章のみ)
- 10. Kaggle learnで学ぶ機械学習の基礎(中級編)
- 11. Pypiにモジュールを公開 2024年版
- 12. MNIST
- 13. それ,numpy で書かない?–5–
- 14. pyautoguiのlocateOnScreenで画像のパス指定に日本語が使えない問題
- 15. ABC337の記録
- 16. 【Python】`.whl`をuniversal wheelにするときに必要なコマンドライン引数の書き方
- 17. ABC337回答メモ
- 18. 【FastAPI】idをuuidで設定するときは型定義に気をつけたい
- 19. ハッカソン+個人開発で「チャプター&要約自動生成してくれる動画共有アプリ」を作成した記録
- 20. 【備忘録】PythonでMySQLのデータベースをマイグレーションする方法
Pythonで動画から音声を抽出する
# 前置き
英語の動画を文字起こしし、日本語の字幕を作成します。
今回はその第一段階として、PythonとMoviePyを使って英語の動画を音声ファイルに変換します。# MoviePyについて
MoviePyは動画の編集を行うためのPythonモジュールです。
インストールは以下の要領で行えます。“`
pip install moviepy
“`pipのアップデートなども必要に応じて行ってください。
# 実行環境
– Python 3.10.13
– moviepy 1.0.3# ソースコード
– 必要なライブラリのインポート
MoviePyは以下の要領でインポートします。“` python
from moviepy.editor import VideoFileClip
“`その他のライブラリもインポートしましょう。
“` python
from tkinter import filedialog
import os
“`– 動作部の実装
実際に動画→音声の変換を行う部分は、以下のように実装しました。“` python
if
使いどころがやっと分かった!GitHub Copilotとのアプリ開発奮闘記
私は普段ChatGPT Plusを使っています。その便利さにはいつも感心するばかり。そんな中、機会があったのでGitHub Copilotも試してみました。
GitHub Copilotと共に簡単なクイズアプリを作ってみた結果、やっとその使いどころを理解できました。”名は体を表す”と言いますが、GitHub Copilotはまさに「副操縦士」の役割を果たしてくれました。当初はアプリをすべて作ってもらうつもりでしたが、基本的な機能を動かすまでにはかなり苦労しました。しかし、一度軌道に乗れば、GitHub Copilotのサポートを受けてスムーズに進められるようになりました。
制作したクイズアプリはこちらです。
https://github.com/takatama/str
PythonでABC337を解いてみたよ。(A~E問題)
[AtCoder Beginners Contest 337 (ABC337)](https://atcoder.jp/contests/abc337) をPythonで解きました。
見やすいコードを書く練習も兼ねてます。TwitterとPayPayリンクをまとめたリトリンを下に貼ってあります。
Twitterのフォローお待ちしてます!(DMでなにか一言いただけるとたすかります…!)
この記事が役に立ったなと思ったら、PayPayのご支援もよろしくお願いします┏○ペコッhttps://lit.link/mer6177999
# A – Scoreboard
## 問題
$i=1,2,\cdots N$ について、$i$ 回目の試合ではチーム高橋が $X_i$ 点を、チーム青木が $Y_i$ 点を獲得しました。
得点の合計が多い方の勝ちです。どっちが勝ったでしょう?https://atcoder.jp/contests/abc337/tasks/abc337_a
## 考察
for文をつかって、チーム高橋とチーム青木のそれぞれの得点を更新していきます。## コ
Python 辞書
pythonでは、辞書が使用できる。
使用するためには要素のキー・値のバリューがセットになっている。
“`
dict_sample = {
‘1’: ‘tanaka’,
‘2’: ‘sato’,
‘3’; ‘takahasi’
}print(dict_sample[‘1’])
“`
辞書での値の取得方法はキーを使用して値の取得を行なうことができる“`
dict1 = {‘1′:’japan’, ‘2’:’koria’, ‘3’:’china’}
dict2 = {‘1′:’japan’, ‘3’:’china’, ‘2’:’koria’}print(dict1 == dict2)
“`
二つの辞書を比較した場合は、
キーとバリューのペアが同じであれば順番が異なっていても同じとみなされる
上記の場合は、True一方、リストはインデックス番号での値の取得を行う
“`
list_sample = [
‘tanaka’,
‘sato’,
‘takahasi’
]pr
手軽なWSL2環境でのpyenv導入 – Windows側のpyenvとの衝突回避
WSL2環境でpyenvのPython動かせるようにしようとしたときに少しハマったので解決するまでの手順を紹介します。
# 前提
– Windows11
– Windows側にpyenv導入済み
– WSL2未導入# WSL2をインストールする
公式サイトを参考にしました。
https://learn.microsoft.com/ja-jp/windows/wsl/install
一昔前まではあれやこれややる必要があった気がしたのですが、今は`wsl –install`一発でインストールできるようになっているんですね。
“`shell
PS > wsl –install
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
インストール中: Ubuntu
Ubuntu はインストールされました。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
“`再起動しろと言われたので再起動したところ、勝手にUbuntuが立ち上がってusern
Pythonだとメソッドからクラス変数を定義できる?
[ゆるコンピュータ科学ラジオ](https://www.youtube.com/@yurucom)、というYoutubeのチャンネルがありまして。
その[「プログラミングの基礎を習得したので、相方botを制作してみる」](https://www.youtube.com/hashtag/108)という回に
関連した記事です。(以下、動画の視聴後にお読みいただければと思います)で、そのコメント欄で、以下の指摘が挙がっていました。
:::note info
[24:48](https://www.youtube.com/watch?v=7HOuwBPuWJA&t=1488s)の「1回目なら○○、2回目以降なら××」という処理について、
パーソナリティは「できる」と言っているが、これは「できない」はず。
(環境変数に回数を保持する等の、現実的でない方法を想定しない限りは)
:::私も、まあ、おおむねそうかな、とは思ったのですが、手元のPython環境で
以下を試したら「1回目の返事」「2回目以降の返事」と順に出力されまして。“`Test.py
class Test () :
LOOPだけで円周率を計算する
以下のアルゴリズムを参考にして、ループと四則演算だけで円周率を計算してみました
https://en.wikipedia.org/wiki/Midpoint_circle_algorithm#Jesko’s_Method
“`python
import time
import mathdef calculate_pi(r):
x, t, sum = 0, 0, 0
y = r# 中心座標(0,0) 半径rの円を描く
for x in range(r + 1):
t += x
if t > y:
t -= y
y -= 1sum += y
# 45°まで
if x >= y:
breakreturn (sum * 2 – x * y) * 4 / (r*r)
# 半径の値
radius_values = [1000, 10000, 100000, 1000000, 10000000, 100000000]# 見出し
print(f”{‘半径’:<10}{'タイム(秒)':<8}{'π':<12}") #
新職場に来て2週間経った。
# はじめに
1月より新しい職場に勤め始めた。
前職とは違い、メーカーではあるもののDXを専門的に進めることができる部署に所属することができた。
データサイエンスを基本的に学んできたが、メインの仕事は画像解析である。
画像解析の経験があまりないため、今後スキルを習得していくうえで有用な技術はどんどんまとめていこうと思う。
今回は、自分自身がどのように今後仕事を進めていくか簡単にまとめようと思う。# 使用言語
まずは使用言語を紹介する。
部所員のスキルセットを聞いていても、基本的にPythonを使用している人が多い印象だが、中にはFortranやC++、TypeScriptを使用している人もいた。
自己紹介でJuliaを使用していることを話したところ何名からかは興味を持ってくれた。
Juliaを業務で使用してもいいのか相談したところ、問題なさそうだったので、PythonメインにJuliaのスキルを上げつつ、いずれJuliaも使用していけたらと思う。# まとめ
こんな中身のない記事で申し訳ないが、新たなスタート地点に立ったことで自分自身のけじめとして書かせてもらった。
Python
『時系列分析と状態空間モデルの基礎』をPyStanで実装した(第6部4章のみ)
## やったこと
– 「時系列分析と状態空間モデルの基礎 RとStanで学ぶ理論と実装」の第6部4章をPyStanで実装した## この記事の対象者
– 状態空間モデルをpythonで実装したいけど書き方が分からない!という人
– PyStanのバージョンを本記事執筆時点のもので動かしたい人## はじめに
– 本記事は私が参考にさせて頂いた元記事に、以下の2点を追加しただけの記事になります。
– 第6部4章に特化
– 2024年1月時点(記事執筆時点)のPyStanのバージョンに対応
– 元記事様:https://qiita.com/takuto512/items/1c903564691e231e1b67
– 実際に動かそうとすると、第6部4章が無い(元記事は、第6部3章と5章はあるが4章が無い)、ライブラリのバージョンが古いという理由でハマったので、勝手ながら執筆させて頂きました。
– 実装はGoogle Colabを用いて行っています。
– コードはこちらから。
https://github.com/intrinsic-motivatio-n/hayabusa
Kaggle learnで学ぶ機械学習の基礎(中級編)
https://qiita.com/k-ysd/items/7205b0dbc4d6cb36021c
前回の初級編に引き続き、中級講座で機械学習の基礎を学習します。
https://www.kaggle.com/learn/intermediate-machine-learning
今回も7回構成で、各回は解説パート(tutorial)と実践パート(exercise)に分かれています。データ前処理の方法・少ないデータでの評価方法・人気のモデルなど、非常に実践的な内容が多かったです。中級講座を終える頃にはデータサイエンティストの入口に立った気分になれるのではないでしょうか。
前半では住宅価格問題のモデルを毎回作ります。だんだんとスコアが上がっていくのが楽しかったです。
| 回 | スコア |
|:-:|:-:|
| 初級編最終 | 21217 |
| 中級編1 | 20998 |
| 中級編2 | 16619 |
| 中級編3 | 16479 |
| 中級編4 | 16380 |以下、要点のメモです。
## 1.はじめに
中級講座全体の紹介の
Pypiにモジュールを公開 2024年版
以下の神記事の手順で、Pypiに自作モジュールを公開しようとしたのですが、途中でエラーが出てしまいました。
https://zenn.dev/k0kishima/articles/7a977bd2dd055e
なんとか公開できたので、その手順を記録しておきます。
## ライセンスの設定〜パッケージのビルドまで
上記の記事のとおりにやればOKです。
## パッケージのアップロード
Pypiがユーザー名とパスワードでの認証を廃止したため、APIトークンを使う必要があります。
### 1. APIトークンを取得
Pypiの”Account settings”からAPIトークンを取得します。(”API tokens”の”Add API token”をクリック)
### 2. `.pypirc` を以下のように書き換える。
“`
[distutils]
index-servers =
pypi[pypi]
repository: https://upload.pypi.org/legacy/
username = __token__
password = pyp
MNIST
# MNIST
“`Python:import文
import torch
# 基本モジュール
import torchvision
# 画像関連
import torchvision.transforms as transforms
import torchvision.datasets as datasets
# 画像用データセット諸々
import numpy as npimport torch.nn as nn
# ネットワーク構築用
# torch.nn パッケージ全体は、単一のサンプルではなくサンプルのミニバッチの入力をサポートするだけ
import torch.nn.functional as F
# ネットワーク用の様々な関数import torch.optim as optim
import matplotlib.pyplot as plt
# グラフプロット用
“`
## データのダウンロード
“`Python
# データの成形
Transform = transforms.Compose(
[
transforms.T
それ,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
pyautoguiのlocateOnScreenで画像のパス指定に日本語が使えない問題
### 開発環境
– Windows 10 Pro(64bit)### 問題
タイトル通りですが、Pythonのパッケージであるpyautoguiの中のlocateOnScreen関数で、第一引数に画像のパスを指定するのですが、ここに、日本語を含んだパスを指定すると、エラーになってうまく動作しません。### 解決策
画像は相対パスで指定できるので、下記のどちらか、1.プログラムを実行中のディレクトリに、画像を置き、相対パスで読み込む
2.日本語以外の名前でディレクトリを新規作成し、その中に、画像を置き、相対パスで読み込むで対処できます。これだと、**実行中のディレクトリよりも上層のディレクトリに日本語が含まれていても**、問題なく動作します。
### サンプルコード
“`python
import pyautogui# 同一ディレクトリにある場合
pyautogui.locateOnScreen(‘screenshot.png’)
# 下部ディレクトリにある場合(今回はimageディレクトリ)
pyautogui.locateOnScreen(‘image\\
ABC337の記録
# はじめに
今週は予定があって不参加でした。あとから解いた。https://atcoder.jp/contests/abc337
# A
両チームの点数を都度足していって最後に比較すればOK。
“`python:A
n = int(input())
tak = 0
aok = 0
for _ in range(n):
x, y = map(int, input().split())
tak += x
aok += y
if tak > aok:
print(“Takahashi”)
if tak < aok: print("Aoki") if tak == aok: print("Draw") ``` ちなみに三項演算子のことは忘れていた。 # B 拡張ABC文字列は最初はABCいずれの文字も受け付けるが、一度Bが入力された後はBかC、一度Cが入力されたらCしか受け付けなくなる。 という訳で、今がどの状態かを管理しながら一文字ずつ確認していく。 ```python:B s = input() param = s[0] for
【Python】`.whl`をuniversal wheelにするときに必要なコマンドライン引数の書き方
## 初めに
Pythonのパッケージ形式の一つとして、`wheel`があります。
Python3系だけでなくPython2系もサポートしてC拡張を含んでいないプロジェクトを`wheel`化したものを、universal wheelといいます。## 遭遇した問題
universal wheelについて、[PyPIのドキュメントに`setup.cfg`でオプションを指定してuniversal wheelを作成する方法がある](https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/#wheels)ものの、コマンドライン引数でオプションを指定する方法が明記されていませんでした。
ここで少しハマりましたが冷静に考えてオプションを指定すればいいだけなので、下記を実行することで`PATH/TO/PRJ_ROOT/dist/`下にuniversal wheelを`package-x.y.z-py2.py3-none-any.whl`のファイル名で作成することができました。
“`
ABC337回答メモ
# 0.はじめに
全体的に易しめの問題だった気がする337回でした。
とはいえ、A~Cは順調に解いたもののDでケアレスミスで大停滞。
3回もWAをだしてスコアを落としました。
とはいえ、なんとか、レートは±0で持ちこたえました。Eは時間のない中強引にチャレンジしたものの玉砕。
その後解説を見ながらなんとか解けました。
Fは解説見ないでも行けそうと取り組みましたが
最初の印象より複雑で、解説を見ても解き方は
あってる気がしますが、実装力が追い付かない感じです・・・。# 1.A – Scoreboard
因縁の高橋君対青木君シリーズ。
入力したXとYを集計し
最後に判定して結果を出力してAC。https://atcoder.jp/contests/abc337/submissions/49436976
# 2.B – Extended ABC
B問題と高をくくってとりかかったところ、意外と実装が難しいことに気づきました。
結局、結構複雑な実装をする羽目になりました。【実装】
前準備として、文字列を先頭から読み、文字と連続する文字数
【FastAPI】idをuuidで設定するときは型定義に気をつけたい
# 概要
FastAPIで遊んでいたときDBから情報を取得できなくなってしまったので、内容を共有しておきたい。
原因を明確にできてはいないが、対応策はあるためご容赦いただきたい。# 流れ
APIを作成しているとき、ブログのid(uuid)をエンドポイントにしている。
“`python
# router/blog.py
@router.get(“/blog/{blog_id}”, response_model=schema.Blog)
async def read_blog(blog_id: UUID, db: AsyncSession = Depends(get_db)):
“””個別のブログを取得する”””
blog = await blog_crud.get_blog_by_id(db, blog_id)
if blog is None:
raise HTTPException(status_code=404, detail=”Blog not found”)
return blog
“``read_blog`ではU
ハッカソン+個人開発で「チャプター&要約自動生成してくれる動画共有アプリ」を作成した記録
# はじめに
私はオンラインITスクールに所属しております。
そのスクール内で開催されるハッカソンに参加し動画チャプター自動生成アプリ「ちゃぷたん」を作成しました。
ハッカソン終了後、どうしても追加で実装したい部分があり個人で開発を続けチャプター&要約を自動生成してくれる動画共有アプリ「video-learn」を作成しました。
今回転職活動にあたってこのアプリをポートフォリオとして提出するため、ハッカソンと個人での追加開発の2つに分けて開発記録を書きたいと思います。
この記事は追加開発の記録になります。ハッカソンの開発記録→[2ヶ月間のハッカソンで動画チャプター自動生成アプリを作成した記録](https://qiita.com/ttookk/items/e3c2d2f46ec8ea541c36)
:::note
チャプター&要約を自動生成してくれる動画共有アプリ「video-learn」公開中です。**月〜金の10-19時**に起動しています
サイト:https://video-learn.site
github:https://github.com/to-u-ko/video
【備忘録】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