- 1. [Django]settings.pyでよく見るパラメータまとめのメモ
- 2. VSCodeにてDocker(CentOS7)のFlask環境を構築(venv使用)
- 3. Deep Learning from scratch 2にBahdanau Attention
- 4. DataFlowのパイプラインでCerberusの機能を使って、csvをチェックしてみた。
- 5. ubuntuでtkinterが使えなくなった(泣)
- 6. 【OpenCV】2つの画像の類似点の座標(X,Y)をndarray形式の変数に格納する【Python】
- 7. 【Pyaudio】を使って録音と再生をする(Windows)
- 8. WindowsでWhisperとpysummarizationを使って音声データの文字起こしと要約させてみた
- 9. 【ORM】SQLAlchemyを使ってみた感想
- 10. [Python]テキストファイルから特定の行を取得
- 11. [Python]ファイルの読み書き操作
- 12. PythonのNetworkXのUnionFind(DSU)の特徴のメモ
- 13. BertJapaneseTokenizer を用いる際に必要なライブラリ
- 14. VSCODEを使ってFlaskを使えるように環境を作った方が確実
- 15. pyenvから3.11をインストール
- 16. 【Python / Pyxel】Webで遊べてSNSに共有できる,レトロゲームを作ってみた.
- 17. Pythonでクリックしたスクリーン上の座標を求める方法のメモ(pynput)
- 18. 【Python】HDF5で日本語出力ができなくて困った件
- 19. 自動微分に再入門する(2)
- 20. 複数ファイルの一括読み込みとデータフレームの作成
[Django]settings.pyでよく見るパラメータまとめのメモ
# はじめに
業務でDjangoを使っているのですが、
あまり設定ファイルをいじることがないので、この際パラメータにどんなものがあるか調べてみました。
大体は名前から意味が予測つくようになっていると思いますが、注意点なども含めて書き残しておきたいと思います。# デフォルトで存在するパラメータ
## BASE_DIR
・プロジェクトの基となるフォルダ
・`django-admin startproject projects-name`で作成したプロジェクトの一番上位のフォルダ
## SECRET_KEY
・Django のインストールごとに設定される個別の秘密鍵
・暗号化やハッシュ化で用いられる秘密鍵であり、Djangoプロジェクト作成時にランダムに生成される
## DEBUG
・本番環境では必ずFalse
・開発環境でデバッグが必要な時にTrueにしておく。エラーが起きたときに、詳細なエラー画面を表示してくれる。ただしKEYやPASSなどの重要情報はセキュリティのため表示されないようになっている。
・実行したクエリを全て記憶しておくので、メモリへの負荷は高い
## ALLIWED_
VSCodeにてDocker(CentOS7)のFlask環境を構築(venv使用)
# 環境
macOS Monterey
VSCode 1.73.0
docker desktop 4.13.1
docker Engine 20.10.20
docker Compose v2.12.1
Python 3.9.15
Flask 2.2.2# DockerにてCentOS7立ち上げ
Dockerインストール
https://qiita.com/suzukiti/items/391bfce352ba94ad3f0d#docker%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%ABなんか以前自分が書いたみたいでした。
VSCodeのDev containers拡張機能を使います。(これも上の記事に書いてあった)## コード(結論)
“`json:devcontainer.json
{
“name”: “sample_flask_app”,
“dockerComposeFile”: [“./docker-compose.yml”],
“service”: “app”,
“workspac
Deep Learning from scratch 2にBahdanau Attention
RNN (GRU) を使った Attention 付きの seq2seq モデルのニューラルネットワークについてです(実行確認済のソースコード有)。この記事に掲載するソースは、斎藤康毅さんの書いた「ゼロから作る Deep Learning 2 自然言語処理編」の第8章で提示されたソースにクラスを付け加えて、Bahdanau attention を使えるようにするものです。斎藤さんも、Attention については、いろいろな方法があると著書で書かれています。その一つのバリエーションです。Bahdanau attention については、tensorflow のページ
https://tensorflow.classcat.com/2019/04/07/tf20-alpha-tutorials-sequences-nmt-with-attention/
で使われているものを勉強して実装しました。
付け加えるクラスは
- AttentionSeq2seq2 クラス
- AttentionEncoder2 クラス
- AttentionDe
DataFlowのパイプラインでCerberusの機能を使って、csvをチェックしてみた。
# はじめに
現在業務でGCPのDataFlowを使ってデータパイプラインを構築しており、CSVファイルがアプリケーションから来るのですが、たまにユーザが手で直したりなんてことがあるので、バリデーションして、不適当な行があれば省いて、後続のデータパイプラインに流したいと思っています。(上流の運用なおしたいのはやまやまですが。。。)
そこでCerberusというバリデーションライブラリがあったので、いっちょやってみようと思った次第です。# Cerberusとは
Pythonのデータ検証用のライブラリで
「Cerberusは、強力でありながらシンプルで軽量なデータ検証機能をすぐに提供し、簡単に拡張できるように設計されているため、カスタム検証が可能です。依存関係はなく、Python 2.7から3.8、PyPyおよびPyPy3まで徹底的にテストされています。」とのこと
(引用元https://docs.python-cerberus.org/en/stable/index.html)簡単に機能と使い方を説明すると、データとチェック用のファイルを比較して、OK/NGを判断してくれます。
ubuntuでtkinterが使えなくなった(泣)
## はじめに
初カキコども
Ze;roPです〜
最近pythonにお熱で難しいことはよくわからないけど、適当にツール作って遊んではそれを仕事で活かしたりして遊んでます。
さて、コマンドラインツールやマクロのようなものばかり作っていて、ちょっとユーザーに優しい感じのツールも作れたらいいかも〜って思ってtkinterを使おうとインストールして、リファレンスのhello worldを実行しようとした矢先、それは起きました。。。
## 突然のエラー
“`
$ python3 -m tkinter
Traceback (most recent call last):
File “/home/USER/.pyenv/versions/3.10.7/lib/python3.10/runpy.py”, line 187, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File “/home/USER/.pyenv/versions/3.10.
【OpenCV】2つの画像の類似点の座標(X,Y)をndarray形式の変数に格納する【Python】
[参考文献:opencv画像をマッチングする](https://wonderfuru.com/opencv%E3%81%A7%E7%94%BB%E5%83%8F%E3%83%9E%E3%83%83%E3%83%81%E3%83%B3%E3%82%B0%E3%82%92%E3%81%99%E3%82%8B/)
# はじめに
[前回のQiitaの記事](https://qiita.com/matttchan/items/0bf30b808b267222d881)ではAkazaのおかげで特徴点マッチングを実現することができた。今回は、その特徴点の座標を取得し、より数学的に画像を扱えるように加工していく。**P.S.この記事はやや深夜テンションで執筆しているので読み進めると気分を害されるかもしれません。耐えてください。**
# 環境
OS : Ubuntu 20.04 LTS (最新バージョンも対応してるかも)
Python : 3.8.10
OpenCV-Python : 4.6.0# きらきら復習たいーむ
## Pythonの文法覚えてるかなチェック
最終的にaの変数はどうなるか
【Pyaudio】を使って録音と再生をする(Windows)
# 概要
Windowsのデバイスから出力される音声を録音するコードです。リモート会議の音声の録音などができます。筆者が以前書いた「 [WindowsでWhisperとpysummarizationを使って音声データの文字起こしと要約させてみた](https://qiita.com/TEST_KEN/items/562d51d79da28f055544) 」と組み合わせると、録音した会議を自動で文字起こしし、かつ要約もできるようになると思います。
## 利用するライブラリ
– 録音に使うライブラリ:『pyaudio』というライブラリを使います。
“`
datetime
wave
time
pyaudio
“`### ライブラリの入れ方
“`pyaudio“`の入れ方は“`pip install pyaudio“`でできます。
### デバイスから出力される音声を録音するための下準備
具体的なコードを掲載する前に、デバイスから出力される音声を録音するためには下準備が必要です。具体的にはループバック録音をできるように設定します。ループバック録音の設定の仕方
WindowsでWhisperとpysummarizationを使って音声データの文字起こしと要約させてみた
# 概要
タイトル通り、音声データ(今回はwavファイル)を日本語に文字起こしさせて、文字起こしした文章をpythonで要約してみます。想定している使い方としては、オンライン会議での簡易的な議事録作成などに使えればと思って作成しています。「会議での音声を録音して、それを文字起こしさせたいなー。できればその文章を要約してくれると助かるなー」というなまけ心が発動しました。
要約の方法は『抽出型』と『抽象型』の2つがありますが今回は“`pysummarization“`という神ライブラリを使うので、後者の抽象型の要約の仕方で実装します。
(抽出型の代表的なライブラリとして“`sumy“`というものがありますが今回はサクッと要約させたかったので“`pysummarization“`を使っています)## 利用するライブラリ
– 文字起こしに使うライブラリ:OpenAIが公開したオープンソースの音声認識ソフトウェアである『Whisper』を使ってみます。
– 要約に使うのは、『pysummarization』というライブラリを使います。今回利用しているライブラリをすべて
【ORM】SQLAlchemyを使ってみた感想
# はじめに
最近はPythonを書いてます。どうも僕です。
PythonでDBを扱う際、`SQLAlchemy`というORMが選択肢に入ってくるかと思います。
今回はこいつをある程度触った感想なりを書いていきます。
# 感想
使ってみた所感を。
\
**「んーーーー微妙。。。。」**
\
といった感じ。
(なんかいろいろ言われそう怖い…)なにが微妙な点なのか。
もちろん、いい点もあり、なんとも言えない部分もあります
# 基本的な使い方
SQLAlchemyでは、DBへの接続を`session`として扱い、クエリを実行します。
“`python:sessionの定義
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base# mysql の設定
DATABASE = ‘mysql://%s:%s@%s:%s/%s?charset=utf8’ % (
“認証情報”
)ENGINE = cr
[Python]テキストファイルから特定の行を取得
# 目次
– [目次](#目次)
– [はじめに](#はじめに)
– [サンプルテキストファイル](#サンプルテキストファイル)
– [行番号で指定した行を取得](#行番号で指定した行を取得)
– [行ごとに分割したリストから取得](#行ごとに分割したリストから取得)
– [linecacheで取得](#linecacheで取得)
– [最初の行と最後の行を取得](#最初の行と最後の行を取得)
– [最初の行](#最初の行)
– [最後の行](#最後の行)
– [特定の文字列が含まれる行を取得](#特定の文字列が含まれる行を取得)
– [開始行と終了行を文字列で指定し、その間の行を取得](#開始行と終了行を文字列で指定しその間の行を取得)
– [参考](#参考)# はじめに
– 今回はpythonでテキストファイルから特定の行を取得してみたいと思います。
– 以下の環境で動作確認をしています。
– python: Python 3.11.0
– os: macOS Ventura 13.0
# サンプルテキストファイル
以下、今回用意したサンプルテキストファイルです。
[Python]ファイルの読み書き操作
# 目次
– [目次](#目次)
– [はじめに](#はじめに)
– [ファイルの書き込み](#ファイルの書き込み)
– [open関数でファイルを開く](#open関数でファイルを開く)
– [with文でファイルを開く](#with文でファイルを開く)
– [書き換えと追記](#書き換えと追記)
– [改行を入れる](#改行を入れる)
– [writelinesメソッドでリストを書き込む](#writelinesメソッドでリストを書き込む)
– [ファイルが存在しない場合のみ新規作成して書き込む](#ファイルが存在しない場合のみ新規作成して書き込む)
– [print関数で書き込む](#print関数で書き込む)
– [ファイルの読み込み](#ファイルの読み込み)
– [readメソッドで全文を読み込む](#readメソッドで全文を読み込む)
– [readメソッドで文字数を指定して読み込む](#readメソッドで文字数を指定して読み込む)
– [tellメソッドで現在位置を取得](#tellメソッドで現在位置を取得)
– [seekメソ
PythonのNetworkXのUnionFind(DSU)の特徴のメモ
# 最初に
AtCoderのPythonで使える`networkx`の`UnionFind`のメモです。
AtCoderで使えるけれど、あまり速くない気がします。`networkx`の`UnionFind`をRubyに移植したい機会があり、
実装を見る機会があったので、特徴をまとめたいと思います。ただ、普段Pythonを使わず、Pythonの用語じゃないかもしれないので、違ってたらコメントでも修正でも書いてもらえたら、嬉しいです。
# UnionFindの特徴
DSU(disjoint set union)とも言いますね。
出来ることは主に
– 要素の結合して、同じグループとする。
– それぞれの要素が同じグループにいるかどうかを素早く確かめる。ですね。
# 主なメソッドの特徴
主なメソッドの特徴を書いていきます。
## `__init__`
インスタンスを作るとき、初期化はリストや範囲型の変数を引数で渡します。
`for`文で回せるイテラブルなものは引数にとれます。
何も引数を渡さなければ、空リストと同じ扱いです。
引数にとるものは、グラフの要素(node
BertJapaneseTokenizer を用いる際に必要なライブラリ
#### BertJapaneseTokenizerをhugging faceのcl-tohokuのbartモデルを利用する際に必要なライブラリのメモ
###### mecabとfugashiが使えればOK
“`.tsx:Bash
pip install mecab-python3
pip install unidic
pip install ipadic
pip install fugashi“`
VSCODEを使ってFlaskを使えるように環境を作った方が確実
先日GitHubで公開したプログラムに、GUIを付けようとWeb開発環境を作っていました。
virtualboxにインストールしているUbuntu22.04を使って、python開発環境を作りました。既にUbuntuにpython3が、インストールされている状態です。
その後、Jupiternotebookをインストールしていました。
でも、ネットで見つけた記事のように、インストールができた確認ができずネット検索を続けていました。
その様子をまとめていますので、こちらの記事も併せて読んで頂けましたら幸いです。https://zenn.dev/masaru21/articles/285ff4c3e0d123
今回は、下記の記事を見つけました。
この記事に従って、勉強しました。https://atmarkit.itmedia.co.jp/ait/articles/1807/24/news024.html
そして、この画像のように、同じ内容を実行できました。
![スクリーンショット_20221106_102826.png](https://qiita-image-store.
pyenvから3.11をインストール
pyenvをアップデートしたら3.11が追加されていました。
“`shell
$ pyenv update
$ pyenv -v
pyenv 2.3.6
$ pyenv install –list | grep ” 3.1[0-9]”
3.10.0
3.10-dev
3.10.1
3.10.2
3.10.3
3.10.4
3.10.5
3.10.6
3.10.7
3.10.8
3.11.0
3.11-dev
3.12.0a1
3.12-dev
“`早速インストールしてデフォルトにしました。
“`shell
$ pyenv install 3.11.0
$ pyenv global 3.11.0
$ pyenv rehash
$ pyenv versions
system
3.10.7
* 3.11.0 (set by /Users/k.abe/.pyenv/version)
“`高速化が気になったのでクラスメソッドさんの記事を参考にパフォーマンスを測ってみました。参考にしたブログは[こちら](h
【Python / Pyxel】Webで遊べてSNSに共有できる,レトロゲームを作ってみた.
![image_home.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2952428/6d5275b8-2284-680b-ebe4-af81e09a7e2b.png)
# はじめに
はじめまして,
[42tokyo Advent Calendar 2022](https://qiita.com/advent-calendar/2022/42tokyo)の8日目を担当する、changです.
今回は,Python向けのレトロゲームエンジンであるPyxelを使って,簡単なミニゲームを制作しました.Pyxelはゼロベースで学習しながらの制作でした.その際に学んだこと,役に立った知識や文献等を,時系列を追って簡単にまとめます.尚,今回はサウンドや効果音周りにまでは手を広げず,あくまでも最低限の基本要素のみとさせていただきます.
Pyxelをゼロから始めてみたい方の参考になれば幸いです.# 目次
1. [Pyxelとは](
Pythonでクリックしたスクリーン上の座標を求める方法のメモ(pynput)
# Pythonで、クリックした画面上の座標を求める方法
※ Pythonに関しては最低限の知識がある方向けです。
`pynput`は外部パッケージなので、pip等を用いインストールします。
“`
pip install pynput
“`インストールしたら、次のコードを動かせるようになります。
“`python:cursol.py
from pynput.mouse import Listenerdef on_click(x, y, button, pressed):
if pressed:
print(‘{:5.1f}, {:5.1f}’.format(x, y))with Listener(on_click = on_click) as listener:
listener.join()
“`クリックで押された時に離れた時に、定義された`on_click`が呼ばれます。
第1引数`x`は、普通のx軸。左端が0。
第2引数`y`は、下方向のy軸。上端が0と。
第3引数は、``。
【Python】HDF5で日本語出力ができなくて困った件
## 背景
HDF5で日本語を保存したとき
` b’\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86’`
のような出力になってしまい困っていたのですが、解決できまちたが、より良い方法があればご教授いただけると幸いです٩( ‘ω’ )و
そしてPythonを普段使わないのでマズイことしてたらご指摘くださいませ
## バージョン情報
python:3.6.1
h5py:2.7.0
※ Dockerで動かしています## コード
出力時に`decode(‘utf-8’)`でデコードを行うことで解決できました。
“` python
import h5pywith h5py.File(‘sample_dataset.hdf5′, mode=’w’) as f:
# vlen=str でないとUnicode文字が使えないので注意
str_dtype = h5py.special_dtype(vlen=str)dataset = f.create_dataset(
‘str_dataset’, shape=(1,1), d
自動微分に再入門する(2)
## 概要
この記事は[自動微分に再入門する(1)](https://qiita.com/nisim/items/489af9055afc88c93d13)の続きです。
今回はPython(PyTorch)で自動微分を実際に使ってみます。
なお、本記事は[PyTorch](https://github.com/pytorch/pytorch)の[チュートリアル](https://github.com/pytorch/tutorials/blob/master/beginner_source/examples_autograd/polynomial_autograd.py)を参考にしていますのでそちら参照しながら読み進めてください。
## 関数のフィッティング
データから関数のフィッティングを考えます。データは$\sin(x)$から生成します。
具体的には$[-\pi, \pi]$の範囲で$\sin (x)$の値を等間隔で2000個計算したものがデータとして与えられているとします。
散布図にするとこんな感じです。[^ 1]
[^1]: 実際にはデータ数は2000個なので
複数ファイルの一括読み込みとデータフレームの作成
■ライブラリのインポート
“`python
import pandas as pd
import glob
“`■一括で読み込み
“`python
file_paths = glob.glob(“天気\*.csv”)
df = pd.DataFrame()
for file in file_paths:
tmp = pd.read_csv(file, encoding=’cp932′)
df = pd.concat([df,tmp])
“`以上がファイル読込とDFの作成(連結)方法。
おまけ
読込ファイル名などをカラムとして指定したい場合
※今回だと都市名ファイルをスライスして抽出
“`python
file_paths = glob.glob(r”天気\*.csv”)
df = pd.DataFrame()
for file in file_paths:
tmp = pd.read_csv(file, encoding=’cp932′)
tmp[“都市”] = file[-7:-3] #ファイル名の一部をカラム追加したい場合はココ