- 0.1. [Day 2]プロジェクトの生成
- 0.2. [Day 1]Djangoの開発環境を整える
- 0.3. Django初心者がハマったエラーと解決法のメモ
- 0.4. Python数学シリーズ③ 行列式(置換)
- 0.5. Pythonで環境変数にアクセスする方法
- 0.6. privateでないAPIがscikit-learn v0.24で削除されたために、unpickleできない経験をしました
- 0.7. 【最新】Google画像検索を保存するPythonライブラリの使い方&ChromeDriverをubuntuで使う
- 0.8. Pythonのhttp.serverはRange Requestに対応してなかった
- 0.9. 音圧レベルFFT (Python)
- 0.10. pytorchを使うときの小さな高速化
- 0.11. Pythonで関数とグローバル変数の応用練習
- 0.12. pythonで作る戦車ゲーム 戦車の挙動について
- 0.13. リストの追加・削除等について(Ruby学習後のPython初学)
- 0.14. PythonでLifegame。
- 1. 前書き
- 2. 環境
- 3. 概要
[Day 2]プロジェクトの生成
[前回;[Day1]Djangoの開発環境](https://qiita.com/kizashi/items/e20a7a48c2879e72ab95)
#プロジェクトの生成
今回は”mysite”という名前でプロジェクトを作成します。“`bash
$ source venv/bin/activate
(venv)$ django-admin startproject myproject
“`生成されたプロジェクトの中身です。
“`bash
.
|–manage.py
|–mysite
|–__inin__.py
|–settings.py
|–urls.py
|–wsgl.py
“`#言語設定
今のままでは英語なので日本語に直しましょう。
mysiteディレクトリのsettings.pyファイルを編集します。“`bash
$ emacs settings.py
“`から
“`bash
– LANG=’en_us’ #となっている箇所を
+ LANG=’ja’ #’ja’にしましょう
“`#タ
[Day 1]Djangoの開発環境を整える
#はじめに
今回このようなものを作成しようと思った意図は、将来の自分がこの記事を見返して自分の成長を確認するためです。
未来の自分が何をやっているか検討もつきませんが、「昔はこういうことをやっていたよ」ということを一目でわかるようになっていればいいです。#pythonの仮想環境の準備
最初にDjangoの開発を進めていく準備をします。
ここではすでにpython3がインストールされていることを前提をしています。今回はvenvにて開発用に仮想環境を作ります。
今後も基本的にvnev環境で操作していきます。“`bash
$ python3 -m venv venv
“`場合によっては「python3」の箇所が「python」の場合もあります。
これでvenvディレクトリが作成されたかと思います。では、作成したvenv環境を有効化しましょう。
“`bash
$ source venv/bin/activate
“`これで有効化されました。
venv環境から出たい場合は以下のコマンドを入力すればおk。“`bash
(venv)$ deactivate
Django初心者がハマったエラーと解決法のメモ
## やったこと
pythonでwebアプリを作ってみたくて、[Udemyの初心者講座](https://www.udemy.com/course/django-3app/)をやってみました。VScodeでソースを編集&Linuxの操作しつつ、Djangoでアプリを動かしDBはSQLiteを使っていく講座でした。
##開発環境
– VScode:1.52.1
– Django:3.1.4
– python:3.8.5##環境構築
venvで仮想環境構築後、Djangoパッケージのインストールを行ったのにVScodeから”Unable to Import Django~”とチェックが入った。VScodeのLinterが参照するPythonファイルが仮想環境にインストールしたものと違っていた。
設定から変更可能。選択肢が自動で表示されるがディレクトリを直接指定することも可能。##プロジェクト設定
アプリで登録した画像ファイルが指定のディレクトリに保存されない。プロジェクトのsettings.pyにて”MEDIA_ROOT”と設定すべき変数名を”MEDIA_DIR”と
Python数学シリーズ③ 行列式(置換)
## このシリーズについて
数学の理解を深めるためにpythonで実装しながら、理解を進めてます。当分は線形代数やろうと思います。数学はそんなに好きではありませんでしたが、最近好きになってきたかもしれません。シリーズの目次は[こちら](https://qiita.com/Hiroaki-K4/items/90b2f86558ef825e5d21)。間違いやもっといい方法など、ご意見あれば気軽にコメントください。## 行列式と置換
行列式は以下の式で定義されます。[参照元](https://mathtrain.jp/determinant)
![Screenshot from 2021-01-05 23-00-30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663246/770f8c45-35db-a66a-fa39-975a963c338d.png)
いきなり、行列式を実装しようとしても色々と知識が足りなかったので、とりあえず置換をまずやっていこうと思います。
置換は以下のように定義されます。[
Pythonで環境変数にアクセスする方法
# 環境変数にアクセスする方法
### モジュールのインポート
“`
import os
“`### 環境変数にアクセスする
Pythonでは、osモジュールの`environ`に環境変数が格納されている。
型は、マップ型です。“`
user_name = os.environ[‘USERNAME’]
print(user_name)
“`また、`os.getenv(key, default=None)`を使用することでも取得できます。
“`
user_name = os.getenv(‘USERNAME’, ‘dummy’)
print(user_name)
“``os.getenv()`は第1引数で環境変数のキーを指定します。
指定されたキーが存在していない場合は、第2引数の値を返却します。# まとめ
環境変数にアクセスする方法は2つある。
* 1つ目は、`os.environ`を使用する方法
* 2つ目は、`os.getenv()`を使用する方法場合によると思いますが、単純にアクセスするだけなら、環境変数が存在していない場合に任意の
privateでないAPIがscikit-learn v0.24で削除されたために、unpickleできない経験をしました
scikit-learn v0.22 より前に作った`MultiLabelBinarizer`が、scikit-learn v0.24以降の入った環境でunpickleできないことを示します。
ちょっとハマった身から言えること:**pickleする環境とunpickleする環境のバージョン違いにはご注意ください**## 環境
macOS
Python 3.7.3## 手順
### `scikit-learn` 0.22より前
scikit-learn-0.21.3
ドキュメントのExamplesを用います
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MultiLabelBinarizer.html#sklearn.preprocessing.MultiLabelBinarizerexperiment.py
“`python
import picklefrom sklearn.preprocessing import MultiLabelBinarizer
m
【最新】Google画像検索を保存するPythonライブラリの使い方&ChromeDriverをubuntuで使う
あけましておめでとうございます。
結構知ってる人が多いとは思いますが私が何度も迷うので書き留めておきます。
機械学習の際の学習データにご利用ください。2020年8月ごろ?に検索結果の提供方法が大きく変わったらしく、Windows用ソフトの「ImageSpider」が使えなくなりました。(結構便利だったんですけどね…)
そこでこれからはPython用ライブラリの**「google_images_download」**を使うことにしました。## インストール
### **【注意】pipではインストールしないでください!**
“`
pip3 install google_images_download
“`PIPにあるバージョンではGoogle側の変更に対応できていないため、インストールしても使えません。
なので直接インストールします。“`
git clone https://github.com/Joeclinton1/google-images-download.git
cd google-images-download && sudo python se
Pythonのhttp.serverはRange Requestに対応してなかった
# 発生した問題
ローカルPCにサーバーを立てて、iOS Safariから動画を開いて再生しようとしたら何故か再生できない…
PCのFirefoxからは再生できるのに…Googleで検索したらこのような記事を発見
[【HTML5】iOSのSafariでvideoタグ埋め込みのmp4が再生できないのはインターレースだから](https://deep-space.blue/web/822)
つまり動画方式が悪いんじゃねーのってこと。
ところが、インターレース方式ではなくプログレス方式なっていた。
FFmpegで再エンコードしてみたりしたが変わらず。
記事の最後の方に追記でほかの原因かもと書いてあり、この記事にたどり着く。
[【MP4】SafariでMP4動画が再生できない問題を解決](https://highmoon-miyabi.net/blog/2019/03/17_000550.html)
一番目はそもそもvideo要素すら使ってないのでありえない。
2番目、別の記事のリンクが張ってあり、タイトルが「[Safariで動画を表示する際、サーバーのHTTP Range Req
音圧レベルFFT (Python)
#はじめに
計測した時間信号が,周波数領域においてどのような特徴(固有振動数・次数音など)を持っているのか?を調べる際に用いられる信号処理手法の1つである**FFT(高速フーリエ変換)**のプログラムコードをここで共有させていただきます.#前置き
・基本概念は,他の方が解説して頂いたので省きます.
・これが初めての投稿となるので,温かい目で見守っていただけるとありがたいです.
・PyCharm 2020.3.2 (Community Edition)#目的
今まで拝見した記事の中では,横軸を周波数 [Hz],縦軸を音圧レベル [dB]または騒音レベル [dBA] としたグラフは見られませんでした(調査不足なだけ).なので,今回は [dB] による周波数分析を試みます.#解析対象のデータのFFT条件
・解析対象は,ホワイトノイズ環境下で外壁タイルを1秒間に1回の頻度で10秒間加振した時の打音データです.
・サンプリングレート fs:8192 Hz
・FFTブロックサイズ block_size:8192 点
・オーバーラップ overlap:0.75
・周波数分解能 df:1.
pytorchを使うときの小さな高速化
# はじめに
pytorchなどを使ってモデルの学習をする際は場合によっては学習に数時間かかったり,何だったら数日かかったりすることがザラにあります.そういう場合は実行時間の定数倍の影響が大きくなってきます.例えば,計算量の定数倍が2から1に変わるだけでも,2日かかっていた学習が1日に短縮できたりします.競技プログラミングとかだと,主に計算量のオーダーの勝負になるのでそういった点では雰囲気が違いますね.今回はよく使える事例での簡単なを紹介します.# コード例
np.arrayのリストをTensor型に変換するコードはよく見ると思います.今回はこういう場面で使える高速化になります.“`python3
import time
import numpy as np
import torcha = [np.ones([100]) for _ in range(100)]
# 8.44s
start = time.time()
for _ in range(10000):
b = torch.tensor(a)
print(time.time()-start)# 0.
Pythonで関数とグローバル変数の応用練習
#はじめに
閲覧していただきありがとうございます。
英語の文法は許してください。
有識者の方へ、もっとなんとかなるとかあったら優しく教えてください。#概要
・AかBに投票をする。
・投票数の確認と投票数の初期化をする。
・終了処理をする。#完成例
“`python
def voteA ():
global vote1
vote1 = vote1 + 1def voteB ():
global vote2
vote2 = vote2 + 1def count ():
global vote1
global vote2
print(“[The number of votes for A is”,vote1,”.]”)
print(“[The number of votes for B is”,vote2,”.]”)def Initialize ():
global vote1
global vote2
vote1 = 0
vote2 = 0op = 0
while op
pythonで作る戦車ゲーム 戦車の挙動について
pythonを勉強していて、戦車の挙動をとてもうまく作ることができたので紹介します。挙動といっても戦車の移動をどうやってコードに書き起こすかという感じです。僕はpythonを利用しましたが、他の言語でも応用はとても簡単だと思います。
#環境
・Python3.9.0
・pygame(ライブラリ)を使っています。#使う知識
・ちょっぴりのプログラミング知識
・高校物理(力学)高校物理と言ってもとても簡単なものなのでご安心ください。
***
今回は戦車の動きを作るのにあたって、二つのステップを作りました。それは**速度**と**方向**です。それとこのゲームはwキーで上、aキーで左、dキーで右、sキーで下に動くようにしています。#速度(位置)編
速度とは何か、と聞かれたらおそらくほとんどの人が「単位時間あたりに進む距離」と考えると思います。そうです。これをコードに起こしてしまうのです。物理で習う式は
“`
x=a*t^2+b*t+x_0
“`
という感じですよね。tは時間、x_0は最初の位置、そしてa,bは定数です。
これをプログラミングで表すにはどうすればよいのか。大前
リストの追加・削除等について(Ruby学習後のPython初学)
#リストの追加・削除等
PythonのリストはRubyにおける配列のようなもの。
“`python:list.py
list = [0, 1, 2]
len(list) #リストの要素数を調べる、この場合は3
list.append(3) #リストの最後に要素を追加、この場合は2の次にカンマが入って3が入る
list.pop(3) #リストの指定した番号の要素を削除、この場合は3が削除される
“`ちなみにcsvのファイルもカンマで区切られているリスト扱いとなるのでリスト操作できるということになる。
PythonでLifegame。
前書き
あけましておめでとうございます。
大した数を投稿してないですが、今年もよろしくお願いします。個人的にLifegame的なプログラムをPythonで書きたいなー、とか思っていたので、年末年始で挑戦しました。
「松の明けぬうちにせめて一本記事を」という思いもありますので、ざっくりした説明とコードを投稿します。
従来同様、あちこちのサイトを調べては書き、「我ながらイケてない」と独り言をつぶやいては手直しし、の繰り返しなので、お見苦しい点もありますが、ご容赦くださいませ。環境
– Windows 10 Pro Build 19042.685
– Python 3.9.1
– matplotlib 3.3.3概要
– Lifegameの詳細については[こちら](https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%95%E3%82%B2%E3%83%BC%E3%83%A0)。(Wikipedia)
– 今回はmatplotlib.pyplotの[scatter](ht
LightGBMのpredictで予測値への寄与度を出す
# はじめに
LightGBMで作ったモデルで予測させるときに、“`predict“`の関数を使っていました。
“`pred = model.predict(data)“` という感じです。
ふと[公式のドキュメント](https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.Booster.html#lightgbm.Booster.predict)を見てみたら、“`predict“`の引数に“`pred_contrib“`というパラメタがあって、SHAPを使った予測への寄与度を出せると書かれてあったので、試してみました。# 環境
環境は以下の通り。
“`bash
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G14042
“`
Jupyterlab (Version 0.35.4) 上で作業していたので、python kernelのバージョンも記載しておきます。“`
Pytho
発音の類似度の指標としての編集距離を計算する【python】
#概要
日本語文同士の発音の類似度として編集距離を用いる場合に注意したことをまとめました。
またカナ、母音、子音の編集距離を求めるコード例を示しました。
#背景
ダジャレや空耳などの自動生成をするときに文章や単語間の発音類似度を求めたくなることがあります。このときに編集距離を使うことが思いつきます。
編集距離は文字列の類似度の指標として使われる指標であり、ある文字列を1文字ずつ編集(挿入、削除、置換)して別の文字列にするために必要な最小編集回数と定義されます。
日本語ではカナ表記と発音が原則1対1対応するので、カナ表記の編集距離を求めれば、発音がどの程度近いかを知ることができます。
ただし拗音、長音については扱いを気をつける必要があります。具体的には以下の処理が必要です。* 拗音(シャなど)は発音としては1拍のため、2単位ではなく1単位として扱う。
* 長音(伸ばし棒)は、直前のカナによって(同じ文字でも)発音が異なるので、対応するカナに変換してから編集距離を求める。また、発音の類似度ということであれば、母音や子音だけに注目した指標を求めたくなることもありそうです。
以上の背
Spotify APIで曲を解析したい 2
#始めに
[前回](https://qiita.com/grinch1252/items/76ca4f03e1d198964eef)の続きです。
アルバム単位のAPI取得、曲の項目などをみていきます。#アルバム情報の取得
前回取得した任意のアーティストのidを利用します。
“`main.py
import spotipy
from spotipy.oauth2 import SpotifyClientCredentialsclient_id = ‘クライアントid’
client_secret = ‘クライアントシークレット’
spotify_client_credentials = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
spotify = spotipy.Spotify(client_credentials_manager=spotify_client_credentials)artist_uri = ‘spotify:artist:5PalnqYJTpnO5wt00jf
Pythonで正規表現
# 使い方
## モジュールのimport
“`
import re
“`## 正規表現オブジェクトの生成・マッチング
正規表現オブジェクトを生成してから、マッチングする方法
“`
# 生成
cmpObj = re.compile(r’a.c’)
# マッチング
ret = cmpObj.match(‘abc’)
“`正規表現オブジェクトを生成しなくても、マッチングできる。
しかし、プログラム中で何度も同じ正規表現パターンを使用する場合は、正規表現オブジェクトを生成して使用するほうが効率的に処理できる。“`
# マッチング
ret = re.match(r’a.c’, ‘abc’)
“`正規表現パターンに文字列がマッチしている場合には、`match()`の戻り値として、マッチオブジェクトを返却する。
マッチしなかった場合は、Noneが返却される。`match()`は文字列の先頭がマッチするかを見ているため、以下のような場合はマッチしない
“`
# これはマッチしない
ret = re.match(r’a.c’, ‘babc’)
“`文
PythonにおいてのDiscord Slash Commandの実装方法
Discordには、最近「スラッシュコマンド」と呼ばれる新しい機能が実装されました。
公式リファレンス見てても英語ばかり、翻訳してみてもいまいち理解できないですよね。そこで、ライブラリを使ってかんたんに実装しつつ仕組みを理解していくことにします。
※なお、Webhook型に関してはここで扱いません
# スラッシュコマンドの標準的な仕様
![無題3_20210105114325.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/196404/61b97532-63e6-d6f3-5d3b-d2f49989106e.png)言葉で長々と説明するのも分かりづらいと思いましたので図を用意しました。
クライアントがスラッシュコマンドを使うとゲートウェイ経由でボットに「〇〇が□□というコマンドを使った、引数はA, B, …」などという情報とともに通知が行きます。
それに従ってボットは応答処理をします。
しかしこの方法はWebSocket経由であるため、送られてきた生の状態のデータを扱うのは難易度が
Windows10のローカル環境で、jupyter labを使う方法
# はじめに
Windows10 環境に jupyter lab をインストールするのに手こずったため、記録を残しておきます。
jupyter lab のインストール手順を Google や Youtube で調べると、Anaconda をインストール手順がよく出てきます。私もそれに倣って、Anaconda 3 をインストールしました。無事に Anaconda 3 をインストールして、jupyter lab も起動するのですが、いくつか問題点がありました。– Anaconda Navigator 画面から、jupyter lab を Lunch して起動する手順が面倒で嫌だった。
– jupyter lab の拡張機能のインストールができない(jupyter lab が壊れる?)何度やっても上手くいかなかったので、この方法は諦めました。
そもそも jupyer lab が使いたいのであって、Anaconda 3 はいらないので、jupyter lab だけインストールする手順を再調査しました。# jupyter lab のインストールと起動
とても簡単に完了しました。
以下