- 1. 住宅ローンの計算を自分でしてみたい
- 2. ワンライナー、二題
- 3. AtCoder Beginner Contest 210 復習
- 4. ADX2ピーク部分にマーカーを作成するスクリプト
- 5. pythonのfomatで分割して代入/別々に代入/段階的に代入
- 6. 英日翻訳器を環境構築なしで10分程度で作ってみた
- 7. Django勉強日記2 ~Windows10にUbuntu環境~
- 8. Windowsで形態素解析(MeCab & Janome)
- 9. FastAPI のProject Generatorを試す
- 10. PEP 657 (Include Fine Grained Error Locations in Tracebacks) を読んだよメモ
- 11. Python フォルダ内のファイル名を一時的に変更して、処理を行ってから、元のファイル名に戻すプログラム
- 12. Herokuで使うPythonのコード内にアクセストークンを直書きするのはやめよう
- 13. jax.vmap, vectorize でサクっと SPMD な並列処理するメモ
- 14. Pandasの日付と時刻
- 15. プリザンターAPIモジュール(Python)
- 16. [Python]StreamlitとPandasを用いたデータ可視化方法 メモ
- 17. yukicoder contest 304 参戦記
- 18. Python 3.9 で class property を作る
- 19. Poetryをサクッと使い始めてみる
- 20. 得体の知れない化学構造記述子について調べる私の方法
住宅ローンの計算を自分でしてみたい
# 何歳の時にどれぐらい住宅ローンの残債が?
私は、30歳ちょっと過ぎたぐらいの頃に、ファミリータープのマンションを35年ローンで購入しました。
よく言われる「持ち家は将来資産になりますが、賃貸は資産になりません」ってフレーズに心動かされて「なんとかなるだろ?」というノリで購入しました。35年ローンで購入すれば賃貸で支払う金額と同額でマンションを持てるって話ですね。
そもそも、このスキーム(35年ローンで…)には、スタート時点で何処かで解決しないといけない問題が見えています。現代における「定年」ってだいたい60歳です。
[<<生命保険文化センター>> 定年年齢は60歳が最多](https://www.jili.or.jp/lifeplan/houseeconomy/employment/12.html)
30歳で購入して35年ローンなんだから、60歳で定年の時に、まだ5年分のローンが残ってる。この課題に対して、既に購入する気になっている30歳は、「繰上げ返済すればなんとかなる」とだけ考えて、「いつまでにどれぐらい繰上げ返済すればいいのか?」「それが実現可能な金額なのか?」に
ワンライナー、二題
# はじめに
ワンライナー、それは果てなき荒野。# その1 市松模様ワンライナー
## 長年の宿題を解決する
内包表記だったか`numpy.where()`だったか忘れたが、そのあたりを学習中に「これを使えば市松模様をワンライナーで書けるのではないか」と思ったことがあった。別にそうせねばならない切実な理由があるわけではないが、その後もときどき思い出したように挑戦し、そして失敗していった。
先日とうとう成功し、うれしさのあまり裸で街を駆け回りおまわりさんの世話になったのだった。嘘だけど。“`Python:tanjiro1.py
import numpy as np
import cv2imgH, imgW = 240, 320
color1 = (135, 172, 79)
color2 = (34, 37, 41)
u = 50 # 単位となる四角の大きさ# これ! Pythonの ^ はべき乗ではなくXOR。
img = np.array([[color2 if (x%(2*u) < u) ^ (y%(2*u) < u) else color1 \
AtCoder Beginner Contest 210 復習
![IMG_83EFEFFF036C-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/331393/5bdb97fe-404d-4fff-add3-47e51a5e0ea6.jpeg)
# 感想今日もコンテストに間に合わなかったので、ダラダラ解いていた。
Dの方針がすぐに思い浮かんだものの、実装に面倒さを感じて他のことに怠けてしまった。
この怠け癖を無くさないと、競技プログラミングだけでなく他のことでも大成できない気がする。
# [A問題](https://atcoder.jp/contests/abc210/tasks/abc210_a)
## 考察
$n$が$a$以下であるかで場合分けすれば良い。$a$以下の時は$n \times x$を出力し、$a$より大きいときは$a \times x+(n-a) \times y$を出力する。
“`go
package mainimport (
“bufio”
“fmt”
“os”
)func main() {
scin
ADX2ピーク部分にマーカーを作成するスクリプト
#はじめに
Pythonでの音の解析の勉強もかねて
音を解析して簡易なピーク検出をして、マーカーを配置するものを作ってみた。環境: CRI AtomCraft 3.45.00
#動作
キューを選択してスクリプトを実行するとマーカーが作られます。ピーク部分にマーカーを作成するスクリプト #adx2 pic.twitter.com/eO2QCDxlVG
— tatmos (@tatmos) July 17, 2021
#音の解析について
あらかじめ断っておきますが、雑な処理かと思います。
・波形をpyaudioを利用してバッファに取り込み
・numpyで処理フレームごとにFFTして低い方のレベルをチェックし
・scipyでピークを抽出しています。弱いピークも検出してしまったり、近接にアタックがあると取り逃したりするかもしれないです。
maxid = sp.argrelmax(amp_all, order=100)
のorderを変更すると検出範囲が変わります。N = 64 #解析するデータ数 (2のべき乗が良い)
BIN = 1#調査するBIN (FFT結果のどこを見るか)FFTなので、分析時間精度と周波数のどこを見るかのトレード
pythonのfomatで分割して代入/別々に代入/段階的に代入
#やりたいこと
pythonの文字列処理でformatというのがあります。
例えば、“`python:test1.py
format_str = “My name is {name}. I am from {place}. Nice to meet you.”what_to_say = format_str.format(name=”Bob”, place=”Beppu”)
print(what_to_say)
“`“`text:実行結果
My name is Bob. I am from Beppu. Nice to meet you.
“`となります。
ただ、以下のようにするとエラーが出ます。
“`python:test2.py
format_str = “My name is {name}. I am from {place}. Nice to meet you.”
what_to_say = format_str.format(name=”Alice”)
what_to_say = what_to_say.format(place=”Tsugar
英日翻訳器を環境構築なしで10分程度で作ってみた
## やること
英日翻訳器を作ります.
ところで,データを頑張って集めていろいろな処理をして,学習するというのを全部自分で作ろうとすると,とても大変です.
しかも,ニューラルネットを使った機械翻訳システムの学習には,一般に十分な計算リソースや計算時間が必要となります.今回は,そういう面倒な思いをしなくても英日翻訳器を作れる方法を紹介します.
この記事で用いるコードはGitHub Gistでも公開しました.
https://gist.github.com/nymwa/d584be8ed36b9513a31e31f5b8f50112
このリンクを開いて,”Open in Colab”を押せば実際に翻訳器を学習して実行することができます.ぜひどうぞ.
## 環境
Google Colaboratory上であれば環境構築をする必要はありません.
実行する際には,ランタイム->ランタイムのタイプを変更のハードウェアアクセラレータがGPUになるように気をつけてください.自分で環境構築をする場合は,Python3とCUDAが動くようにしてください.
## データの入手と前処
Django勉強日記2 ~Windows10にUbuntu環境~
#はじめに
ちょっと最近環境構築トラブルなどありまして、Qiitaを開けてなかったです。
とりあえず今日はちょっと久しぶりの投稿というのもあるので、勉強したことと言うよりDjangoを使うにあたって行った環境構築系のことについて話そうと思います。勉強したことに関してはまた、整理して投稿します。#なぜインストールするのか
なぜWIndows10にUbuntu環境を入れるのか。
どうやら、コードを公開する際などは、LinuxやUnixがインストールされた環境がメジャーのようです。Ubuntuは比較的誰でも使いやすいみたいなので、今回は本番を想定として、Ubuntu環境で開発を行えるように環境構築をしていきます。Windows10の場合は、wsl(windows subsystem for linux)というものがあるので非常に簡単に使えるようになるみたいです。#Winsdows10にUbuntu(wsl)のインストール
WIndowsにUbuntuをインストールしてみます。
MicrosoftStoreからUbuntu 18.04LTSをインストールします
![image.pn
Windowsで形態素解析(MeCab & Janome)
## はじめに
先日Kaggleの言語モデルのコンペに参加し、日本語の前処理の方法も少しメモを残しておこうと思った。(結構前にやったきりあまり触れていなかったので。。。)
まずは基本的な形態素解析の実装方法くらいを今回の記事にまとめる。## 前提条件
【PC環境】
Windows 10 Pro
【ローカル環境のpython.Ver】
python 3.9.5
【仮想環境のpython.Ver】
python 3.9.5仮想環境を作成することはマストではないが、一旦テストが終わったら丸っと削除するつもりなので、今回は仮想環境で作業している。
## 手順
1.**MeCab**、**Janome** の準備/インストール
2.各ライブラリで形態素解析## 1.**MeCab**、**Janome** の準備/インストール
### **MeCab** の準備/インストール
**・WindowsにMeCabのダウンロード**
32bit版:MeCabの[公式サイト](http://taku910.github.io/mecab/#download)から
FastAPI のProject Generatorを試す
## はじめに
前回ご紹介したFastAPIですが、どうやらボイラープレートが存在するようなので検証します。
## 環境
– ubuntu 20.04.2 LTS(wsl)
– python 3.8## インストール
ひな形作成前にopensslにてキーを作成する必要があるとの記載があったので作成しておきます。
出力値は後ほど使用するので控えておきましょう。“`sh
$ openssl rand -hex 32
2cfc~
“`以下コマンドでプロジェクトのひな形を作成します。
cookiecutterというツールを使用してgitのリポジトリからひな形を作成するみたいですね。“`sh
$ pip install cookiecutter
$ cookiecutter https://github.com/tiangolo/full-stack-fastapi-postgresql
“`ウィザード形式でプロジェクトに必要な情報を入力していきます。
“`
project_name [Base Project]: abcApp
PEP 657 (Include Fine Grained Error Locations in Tracebacks) を読んだよメモ
先日、[PEP 657 (Include Fine Grained Error Locations in Tracebacks)](https://www.python.org/dev/peps/pep-0657/) が [Final になったという PR](https://github.com/python/peps/pull/2032) を見かけました。
そして、cpython に実装が取り込まれていることが確認できたので、あらためて紹介しようと思います。## 概要
* 1行で複数の処理をしている箇所でエラーが発生した際に、どの処理でエラーが発生したのか表示する
* 表示を改善するため、Python のバイトコード命令(bytecode instructions)に(行番号に加えて)オフセット情報を追加する
* バイトコードのサイズが約 20% 増加する (標準ライブラリでの計測値)。.pyc ファイルと消費メモリに影響する
* 環境変数 `PYTHONNODEBUGRANGES` やコマンドラインオプション `-Xno_debug_ranges` で無効化できる## ア
Python フォルダ内のファイル名を一時的に変更して、処理を行ってから、元のファイル名に戻すプログラム
# 最初に
初投稿です。不備があればすみません。ちょっと丁寧な備忘録程度で投稿しています。決まったファイル名の画像しか受け付けないAPIがあり、画像の名前を「××.jpg」に変更してから投げる必要があったのですが、流石に何十枚も画像があると手動で名前変更してAPIに投げて……は面倒……。
かといって、同一フォルダに同じファイル名のものは置けないし……。ということで、
**ファイル名を一時的に変更 → APIに画像を投げる → ファイル名を元に戻す**
という作業をフォルダ内の画像全てに対して行うPythonプログラムを作りました。今回しか使わないものなので、拡張子のとことか、荒い部分がありますがご了承ください。
# プログラム
“`Python
import osfilePath=’.\\folder\\test’ # パスは適宜変更してください
def main():
register()
os.system(‘PAUSE’) # 個人的にキーを押して終了させた方が好きなので入れていますdef register():
# 変更する名前
Herokuで使うPythonのコード内にアクセストークンを直書きするのはやめよう
# この記事の対象
Herokuでデプロイするアプリのコードを自分のGithubリポジトリにもあげたが、アクセストークン(token)の直書きによって怒られてしまった人# まえがき
外部APIを使う際など、Secret TokenやAccess Tokenを要求される場面があると思います。これをコード中に直書きしてしまうとgithubのpublicリポジトリに上げてしまった場合や、なんらかの理由でソースコードを第三者に見られた場合に不正なアクセスをされてしまう可能性があります。“`Python:良くないトークン使用例
BAD_TOKEN = ‘hogehogefugafuga’def getHoge():
hoge = Hoge.access(BAD_TOKEN)
return hoge
“`# 対応策
herokuにログインしたターミナルから以下のように入力してください。“`txt:構文
Prgckwb:~/python % heroku config:set トークン名=”トークンの中身” –app app名
“`今、`sampl
jax.vmap, vectorize でサクっと SPMD な並列処理するメモ
## 背景
数値計算を Python(numpy, scipy)でやっている. SPMD(e.g. 配列要素ごとに同じコードを実行)的なコードが実行できれば十分.
e.g.
“`py
ret = numpy.zeros((nx, ny))for x in range(nx):
for y in range(ny):
r = numpy.sqrt(x*x + y*y)
ret[x, y] = r
“`計算速くするためにマルチスレッド化とかしたいが, Python では並列処理スレッド関係とかでめんどい… multiprocessing の Pool や starmap などあるが, 処理するデータのサイズが大きいとメモリ不足になったりする(内部で一時的なバッファをたくさんつくるようでメモリ消費が多い)
CPU, GPU(CUDA) 両方でうごいてほしい
cupy の vectorize だと python コードでは使える cupy 関数が少なくてつらい(cupy.sum とか未対応) 😥
## jax.vmap, jax.num
Pandasの日付と時刻
## 日付と時刻データの読込み
ファイル読込み時または読込み後に、文字列を日付・時刻に変換することができます。
ファイル読込み時
“`python
df = pd.read_csv(‘test.csv’, parse_dates=[‘Start Date’, ‘End Date’])
“`ファイル読込み後
“`python
df[‘Start Date’] = pd.to_datetime(df[‘Start Date’], format=’%Y-%m-%d %H:%M:%S’)
“`
## 日付と時刻データのサマライズ日付と時刻でグループ化し、サマライズを行うにはpandasのresampleメソッドを使用します。
月でグルーピング
“`python
df.resample(‘M’, on=’Start Date’)[‘Summarize Target’].mean()
“`出力:
“`text
Start Date
2020-10-31 1886.453704
2020-11-30 854.174757
2020-12-31 635.1012
プリザンターAPIモジュール(Python)
#はじめに#
プリザンターのAPIで頻繁に使う「単一レコード取得」「複数レコード取得」「レコード作成」「レコード更新」をモジュール化したので公開します。(言語はPythonです)#モジュール#
“`python:ModPleasanter.py
import requests
import json“””
関数:getRecord
引数:baseUrl str – Pleasanter APIのベースURL
recordId str – PleasanterのレコードID
apiKey str – Pleasanter APIのKEY
返値:辞書のリスト
またはHTTPエラーコード
“””
def getRecord(baseUrl, recordId, apiKey):
# URLを作成
url = baseUrl + ‘/’ + recordId + ‘/get’# APIにリクエストするデータを作成
payload = {
“ApiKey”: apiKey
}# API(複数レコード取得API)にリクエスト
r_post =
[Python]StreamlitとPandasを用いたデータ可視化方法 メモ
* Webアプリケーション構築用フレームワークStreamlitとデータ処理用ライブラリpandasを用いたデータ可視化方法についてメモする。
## 事前準備
* `Streamlit`インストール
“`shell
pip install streamlit
“`* `Pandas`インストール
“`shell
pip install pandas
“`## コード
* 厚生労働省(全国)、NHK(都道府県別)が公開しているコロナウィルス情報を整形し、表・グラフ描画する。
* 全国情報は、表形式で統計情報(合計、平均、最大、最小)を描画する。
* 都道府県別情報は、セレクトボックスで選択した都道府県情報を月別で折れ線グラフで描画する。* `test.py`
“`python
import streamlit as st
import datetime
import pandas as pd
from urllib.request import Request, urlopen# タイトル描画
st.tit
yukicoder contest 304 参戦記
# yukicoder contest 304 参戦記
## [A 1603 Manhattan Social Distance](https://yukicoder.me/problems/no/1603)
*N*=2だと(1, 1) と (H, W) に置くのが最大だなあとなり、*N*=3だと3個目はやっぱり (1, 1) か (H, W) に置くよなあの辺りで、(1, 1) と (H, W) に交互に置けばいいのかと分かる,
“`python
N, H, W = map(int, input().split())print((H + W – 2) * ((N + 1) // 2 * N // 2))
“`## [B 1604 Swap Sort:ONE](https://yukicoder.me/problems/no/1604)
答えは転倒数(蟻本では反転数)なので、過去のコードを貼る.
“`python
class BinaryIndexedTree:
def __init__(self, size):
self._data =
Python 3.9 で class property を作る
Python 3.9 から `@classmethod` と `@property` の重ねがけができるようになった事に気づきました。
>バージョン 3.9 で変更: Class methods can now wrap other descriptors such as property().
>https://docs.python.org/ja/3.9/library/functions.html#classmethodということで、早速実験してみました。
“`python
>>> class Foo:
… @classmethod
… @property
… def prop(self):
… print(‘Hello class property!’)
… return “hello”
“`こういうクラスを作っておいて、クラス属性 `prop` を呼び出すと、メソッドが呼び出され、値が返ります。
“`python
>>> Foo.prop
Hello class property!
Poetryをサクッと使い始めてみる
## はじめに
以前、[pyenvとpyenv-virtualenvの自分流使い方](https://qiita.com/ksato9700/items/5d9eba10fe6b8e064178)という記事を書きました。その終わりの部分で「pyenv-virtualenv+pipをpoetryで置き換えられるんじゃないかな」と書いていたのですが、実際に試してみた結果をご紹介したいと思います。結論から言うと、pyenv-virtualenvとpipは使わなくなりました(笑)
## Poetryとは
[Poetry](https://python-poetry.org/)はPythonのパッケージマネージャの一つです。v1.0になったのが2019年末なのでまだまだ新しいツールです。pipと同じようにパッケージを[pypi](https://pypi.org/)などからダウンロードしてきてインストールすることができますが、それに加えて次のようなこともできます。
– パッケージ管理ファイルの生成・変更
– インストールされているパッケージのアップデート
– プロジェクトごとの仮想環境
得体の知れない化学構造記述子について調べる私の方法
# はじめに
化合物の物性・活性を予測するモデルを機械学習で作ったのはいいが、いざモデルの分析しようとしたときに、**説明変数に含まれるこの記述子って何だっけ?**となることがあると思う。記述子の説明や、論文を調べてもピンとこないことも多い。今回はそんな状況で記述子について手がかりを知る方法を共有したい。
#方法
本記事で提唱する方法は次の2つである。– 似たような計算結果となる記述子を調べてみる。似ているかどうかは、計算結果同士の相関をとることで判断する。
– 記述子の計算結果が大きい値をとる化学構造、小さい値をとる化学構造を調べてみる#今回の得体の知れない記述子
今回調べる記述子は**独断と偏見**で、mordred の **GATS8are** という記述子に決定~。理由としては、**値が計算できないケースがあるので例として適切** および、**説明を読んでも本当に何なのか全く想像がつかない** という理由による。
[mordredのホームページ](https://mordred-descriptor.github.io/documentation/master