- 1. manimの作法 その48
- 2. Djangoでカスタムユーザーモデルを作ろうとしたらエラー
- 3. DjangoでもForiegnKeyが動かない現象
- 4. manimの作法 その47
- 5. [デイリーコーディング] 文字列内の各アルファベットを10個後のものに変換する
- 6. PythonでHTMLの読み取りをする方法
- 7. Google画像検索の各画像をスクリーンショットで保存する (Python, Selenium)
- 8. 日本語版Easy Data Augmentation の効果検証(実装コードあり)
- 9. Mambaを使った高速condaパッケージ管理 (python)
- 10. Python Scrapyを使用したクローリング・スクレイピングプログラムの開発(その3 Scrapy Shell編)
- 11. ラズパイ4BでSSH接続(Mac、最初からディスプレイなし、無線LANの場合)<前編>
- 12. 【Python】ABC191 D – Circle Lattice Points (誤差問題)【AtCoder】
- 13. Python Qiita API を使ってキーワード検索
- 14. Pandasで2つのデータフレームに共通する行だけ残す・削除する方法
- 15. matplotlibのcolormapを使って二次元データを高速に画像化
- 16. 競馬AI〜タイムと着差をスクレイピング〜
- 17. Python[List/Dict] – スライス、ストライド、catch-allアンパック、ソート
- 18. Python[List/Dict] – getメソッド, setDefault, defaultDict, __missing__
- 19. Spotifyが公開しているAPIを使用してUK Official Chart Top 100に対応したプレイリストを作ってみた
- 20. 基礎編:再帰処理
manimの作法 その48
#概要
manimの作法、調べてみた。
complex_to_R3使ってみた。#サンプルコード
“`
from manimlib.imports import *class test(ThreeDScene):
def construct(self):
self.set_camera_orientation(phi = 75 * DEGREES, theta = 30 * DEGREES)
axes = ThreeDAxes()
self.add(axes)
w = 1
surface_01 = ParametricSurface(lambda u, v: v * complex_to_R3(np.exp(1j * w * u)), u_min = 0, u_max = TAU, v_min = 1, v_max = 3, checkerboard_colors = None, fill_color = BLUE_B, fill_opacity = 0.8, stroke_color = BLUE_A, resolution = (60, 10))
Djangoでカスタムユーザーモデルを作ろうとしたらエラー
Djangoの公式ドキュメントだと、
「ユーザーモデルを使う時はカスタムして使うの推奨」って書いてるんですけど、migrationで躓く感じ
で、多分一丸参考になる回答がコレ
https://stackoverflow.com/questions/50324561/valueerror-the-field-admin-logentry-user-was-declared-with-a-lazy-referencemigrationファイルを消して、もう一回マイグレーションを実行、でスーパーユーザー作成、らしい。
参考
https://qiita.com/KueharX/items/3927312a1972e8c33790#実際やったこと
##1.マイグレーションファイルを全部消す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76504/0f37f3a1-c8a3-f617-a7ee-a6b107ebd6c7.png)
このマイグレーションファイルで書いてあるもの
DjangoでもForiegnKeyが動かない現象
フォーリンキーをmakemigrationsするとエラーが出る!
“`User.py
from memFrame.models import T_UserToken
class M_User(AbstractBaseUser, PermissionsMixin):
UserTokenId = models.ForeignKey(
‘T_UserToken’,
related_name=’T_UserToken’,
null=True,
on_delete=models.CASCADE, # デフォルト動作指定、UserHogeの削除時にユーザーモデルも削除される
blank=True
)
“`“`User.py
from memFrame.models import T_UserToken
class M_User(AbstractBaseUser, PermissionsMixin):
UserTokenId = models.ForeignKe
manimの作法 その47
#概要
manimの作法、調べてみた。
TexMobject使ってみた。#サンプルコード
“`
from manimlib.imports import *class test(Scene):
def construct(self):
tex = TexMobject(“(25^\\circ\\text{C}, 101 \\text{ kPa})”)
self.play(Write(tex))
self.wait()
self.remove(tex)
tex = TexMobject(r”f(x)=\ln (2x)-\frac12 x+5″)
self.play(Write(tex))
self.wait()
self.remove(tex)
tex = TexMobject(“\\vec{\\textbf{v}}”)
self.play(Write(tex))
self.wait()
self.remove(tex)
tex = TexMobject(“\\sum_{k=1}^n k^3”)
self.play(
[デイリーコーディング] 文字列内の各アルファベットを10個後のものに変換する
#今日の問題: 文字列内の各アルファベットを10個後のものに変換せよ
ord()とchr()を使って解決していきます。
“`python:回答(Python3)
from icecream import ic # デバッグ用にicecreamをインポートしています。def move_ten(st):
result = “”
for i in st:
ordI = ord(i)
if ordI >= 113:
result += chr(ordI – 16)
else:
result += chr(ordI + 10)
return resultic(move_ten(“testcase”)) # “docdmkco”
ic(move_ten(“codewars”)) # “mynogkbc”
ic(move_ten(“exampletesthere”)) # “ohkwzvodocdrobo”
ic(move_ten(“returnofthespacec
PythonでHTMLの読み取りをする方法
#使用している環境
##環境について
今回の記事で紹介するpythonのコードを実行する環境は+ Windows10
+ Visual Studio 2019
+ Python3.7 (64bit)となります。
他の環境では詳細が異なる場合があります。##参照ライブラリ
標準でインストールされているライブラリ以外に+ bs4
というライブラリをインストールする必要があります。
このライブラリはHTMLファイルから読み取るための関数が定義されています。
Visual Studio2019のトップ画面から「ツール」→「Python」→「Python環境」
でPython環境画面を開きます。
![VS画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531515/f79610bf-b1ce-a73f-ad40-ad3d413a1ce4.png)Python環境画面からPowerShellのコンソールを開きます。
PowerShellのコンソール画面で“`
pip3 in
Google画像検索の各画像をスクリーンショットで保存する (Python, Selenium)
# はじめに
画像をたくさん集めたい場合、画像検索結果から画像のソースをスクレイピングして画像をダウンロードする、みたいな記事はいくつかありますが、今回はGoogleで画像検索をしたときの結果をその場でスクリーンショットして画像を集める処理を自動化することで、その目的を達成することにしてみます。つまり、Googleの画像検索結果ページに一度アクセスするだけのリクエストで済み、あとはそこにある画像をスクショしているだけという状態をブラウザの自動化ツールであるSeleniumを使って作り出します。注意点としては、画面に表示されているものをスクショしているだけなので画像サイズ(ピクセル数)は200×200程度の場合が多いです。用途としては問題ないかもしれませんが、仕方ありません。
検索クエリによると思いますが、今回は3分無いぐらいで500枚程度の画像が保存されました
# 環境
– python 3.6.5# 実装
SeleniumのChromeドライバーを使用しました。使用しているクロームと同じバージョンのドライバーをダウンロードしていますhttps://chromedriv
日本語版Easy Data Augmentation の効果検証(実装コードあり)
# やったこと
先日公開した下記の記事の続編となります。
[自然言語処理のかさ増し手法 Easy Data Augmentation の日本語版を実装する]
(https://qiita.com/tchih11/items/aef9505d26d1bf06a04c)前回はEasy Data Augmentation(以下、EDA)という手法を使用して日本語の文章をかさ増しする関数を実装しました。今回はその関数を使ってデータセットかさ増しすることによって、実際にモデルの精度が向上するかを検証します。
# 検証方法
livedoorニュース分類モデルの作成を通じて検証しました。
###流れ
– 500件/1000件/2000件のtrainデータを用意
– それぞれでEDAなしモデル、EDAありモデルを作成
– 予め確保しておいたtestデータ(1471件、全体の2割)に当てはめ、accuracyを比較###備考
– EDAパラメータはα=[0.05,0.1]、aug_num=[1,2,4,8,16]の組み合わせを試す
– モデルはBERTを使用し、パラメータはepoch数をearl
Mambaを使った高速condaパッケージ管理 (python)
# はじめに
Pythonのcondaパッケージ管理でmambaというツールが高速でよいよ!という話を耳にしたので自分の勉強のためにメモしてまとめてみました。基本的に公式Readmeの内容をベースにしているので英語が読める方は直接どうぞ!
https://github.com/mamba-org/mamba# mambaとは?
一言でいうと、**”C++で実装された高速なcondaパッケージマネージャー”**大きな特徴として下記が挙げられます。
– クロスプラットフォーム対応
– マルチスレッドによるリポジトリ・パッケージの並列ダウンロード
– 最先端のライブラリ (libsolv)を使って高速に依存関係を解決
– コア部分をC++で実装
– `conda` とほぼ互換# インストール
“`sh
conda install mamba -c conda-forge
“`# condaパッケージのインストール
“`sh
mamba install <インストールしたいパッケージ名> -c conda-forge
“`
の形でインストールできます。例:
`
Python Scrapyを使用したクローリング・スクレイピングプログラムの開発(その3 Scrapy Shell編)
Python Scrapyを使用したクローリング・スクレイピングプログラムの開発(その3 scrapy shell編)
Python Scrapy スクレイピング クローリング
[前回の記事](https://qiita.com/ezotaka/items/4840a7ca2f70c653a9c8)では、猫の写真画像データとその撮影情報を収集するためにどのサイトをスクレイピングするのがよいかの事前調査を行いました。
そして、[PHOTO HITO](https://photohito.com/)というサイトをスクレイピングすることに決めました。**今回の記事では以下のことを行います。**
* **Scrapy Shellの使い方を簡単に説明します。**
* **Scrapy Shellを使用して目的情報の抽出方法を検討する際の流れを、具体的なコードを踏まえて説明します。**# まずは結論から
* プログラムを実装する前にScrapy Shellで試行錯誤をすることで、デバッグにかかる時間を減らすことができます。
* 情報抽出のためのCSSセレクター(XPath)は普遍性
ラズパイ4BでSSH接続(Mac、最初からディスプレイなし、無線LANの場合)<前編>
ラズパイを買ったもののディスプレイがなく、手持ちのパソコンでリモートSSH接続がなかなかできなくて困っている方もけっこういらっしゃるのではないでしょうか?僕も結構時間がかかりました。この記事がラズパイのSSH接続にお役に立てたら嬉しいです。
#環境情報#
MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports)
macOS Catalina バージョン10.15.7#大まかな手順#
1.必要な物をそろえる
2.microSDカードをSD Card Formaterで初期化
3.OSをダウンロードしてmicroSDカードにファイルを配置する
4.SSHを有効化する&ラズパイをWi-Fiに接続する準備
5.起動する(電源につなぐ)
6.SSH接続する(起動を確認)
7.VNC ViewerでGUI接続#1.必要な物#
・Mac
・Raspberry Pi 4B
・MicroSDカード(最低32G)
・SDカードリーダー・SDCard Formater([こちら](https://www.sdcard.org/ja/down
【Python】ABC191 D – Circle Lattice Points (誤差問題)【AtCoder】
[ABC191 D – Circle Lattice Points](https://atcoder.jp/contests/abc191/tasks/abc191_d)
ふりかえりをしていたが、
解説見て、解き方わかったのにどうしてもWAが消えない
10000倍して、整数でやってるつもりなのに、どうして!!!
ということでACの人たちのコードみたら、
10000倍してる人も**ルート計算で結局Decimal使ってるっぽい!**#結論
**Decimal最強伝説!**
誤差問題はDecimalで提出しましょう。
※ちなみに、PyPyはDecimal計算遅いので、Pythonで提出しましょう。#以下結論までの軌跡・・・
提出したコードたちはこちら“`python:WA1.py
import math,sys
def LS(): return list(sys.stdin.readline().rstrip().split())
#############################
from decimal import Decimal
n = 10000
X,Y,
Python Qiita API を使ってキーワード検索
# Python Qiita API を使ってキーワード検索
Qiita API ドキュメント
https://qiita.com/api/v2/docs## アクセストークンの取得
設定 > アプリケーションからアクセストークンを発行
https://qiita.com/settings/applications## 検索クエリ
page … ページ番号(1~100)
per_page … 1ページあたりに含まれる要素数
query … 検索クエリ
検索オプション … https://help.qiita.com/ja/articles/qiita-search-options例:PHPタグを含み作成日付2021-02-09の投稿を取得
注)日付検索条件はUTC時刻を元に行われる模様“`
https://qiita.com/api/v2/items?page=1&per_page=100&query=tag:PHP+created:>=2021-02-09+created:<=2021-02-09 ``` ## Python取得 QIITA
Pandasで2つのデータフレームに共通する行だけ残す・削除する方法
Pandasで2つのデータフレームを比較して処理を行う方法をまとめます。
例として以下のデータフレームを使用します。
“`py
import pandas as pddf_2017 = pd.DataFrame({‘種類’:[1, 2, 3, 1, 3], ‘サイズ’: [“S”, “S”, “M”, “L”, “S”], ‘平均価格’: [200, 120, 250, 300, 260]})
df_2020 = pd.DataFrame({‘種類’:[2, 2, 1, 1], ‘サイズ’: [“S”, “M”, “L”, “M”], ‘平均価格’: [130, 180, 340, 280]})
“`2017年のデータ
||種類 |サイズ |平均価格|
|:—-:|:——–:|:————:|:————:|
|0 |1 |S |200|
|1 |2 |S |120|
|2 |3 |M |250|
|3 |1 |L |300|
|4 |3 |S |190|2020年のデータ
matplotlibのcolormapを使って二次元データを高速に画像化
#まとめると
二次元データを画像化して保存したいとき、`matplotlib.pyplot.imshow()` は遅いので、matplotlibの`Colormap`を使って直接保存できます。#問題設定
ある二次元データが(たくさん)あって、画像化したいとします。“`python
import numpy as np
from matplotlib import pyplot as plt
data = np.arange(100).reshape(10,10)
plt.imshow(data)
plt.savefig(“test.png”)
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/460873/72f6e45b-25cb-058c-3f9a-a81c9d841b45.png)しかしご存知の通りmatplotlibは遅いですね。遅いのはいちいちグラフィックレンダラーを呼んでレンダリングしてその結果を保存しているからです。
しかしやりたいことは、`data`をな
競馬AI〜タイムと着差をスクレイピング〜
### タイムと着差がスクレイピング出来てない。。。
前回、競馬AIを作りたくてnetkeiba.com様からスクレイピングさせてもらいました。その時のデータがこんな感じです。
![スクリーンショット 2021-02-10 11.03.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/978166/a0b69bce-451b-b938-18c3-0b291c0e03de.png)**タイムがない。。。!!!**
順位であるrankを予測したいので一応これでも予測出来るのですが、やはり競馬において走破タイムは大事になってきます。有名なものだと走破タイムから計算した**西田式スピード指数**というものがあります。これは以下の式で表されます。“`math
西田式スピード指数=( 基準タイム - 走破タイム ) × 距離指数 + 馬場指数 + (斤量-55) × 2 + 80
“`詳しい解説は[こちら]が参考になりました。
[こちら]:https://team-d.club/about-sp
Python[List/Dict] – スライス、ストライド、catch-allアンパック、ソート
# シーケンスのスライス
Pythonには、シーケンスをスライスする構文があります。スライスをすることにより要素の部分集合に最小限の労力でアクセスできます。list, str, byteという組み込み関数は簡単にスライスできます。~~~python
a = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’]
print(‘Middle two: ‘, a[3:5])
print(‘All but ends: ‘, a[1:7])
>>>
Middle two: [‘d’, ‘e’]
All but ends: [‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]
~~~末尾までスライスする時には、末尾のインデックスは冗長なので省きましょう。
~~~python
print(‘To end: ‘, a[5:])
>>>
To end: [‘f’, ‘g’, ‘h’]
~~~スライスでは、りすんとを超えたstart, endも欠損した要素を無視することで適切に扱われます。
また、インデックスに直接アクセスしようとすると例外が発生します
Python[List/Dict] – getメソッド, setDefault, defaultDict, __missing__
# 組み込みdictのget()・setDefault
Dictを扱うための3つの基本的な演算とは、キーとその値へのアクセス, 代入, 削除です。例えば、以下のようなフルーツを`counters`とするdictを定義します。
~~~python
counters = {
‘appple’: 3,
‘banana’: 2
}
~~~新たに追加するものを`counters`に増やすには、キーがあるかどうか調べ、なければデフォルトのカウンタ値0で挿入し、カウンタの値を1つ増やします。if分でキーが存在する場合にTrueを返すin文を使います。
~~~python
key = ‘lemon’
if key in counters:
count = counters[key]
else:
count = 0
counters[key] = count + 1
print(counters)
>>>
{‘appple’: 3, ‘banana’: 2, ‘lemon’: 1}
~~~同じことを実現する別の方法として、存在しないキーの値を得たい場合にK
Spotifyが公開しているAPIを使用してUK Official Chart Top 100に対応したプレイリストを作ってみた
# Spotifyが公開しているAPIを使用してUK Official Chart Top 100に対応したプレイリストを作ってみた
Sportifyとは世界中の音楽が聴き放題の神アプリです。
筆者は、通勤などの移動の際には必ずSportifyを使用して音楽を聞いています。
Sportifyのいい所は、プレイリストが豊富であり、
* Top Chartプレイリスト
* アーティスト別のプレイリスト
* 好きなアーティストに関連する曲が含まれるプレイリスト
* 自分にオススメの曲で構成されたプレイリスト
などがあります。また、SportifyはSHAZAMと連携することができ、SHAZAMした曲を1つのプレイリストにまとめることができます。
筆者はDJをしていますので、これらの機能があるSportifyをとても愛用しています。
こんな”最高の”Sportifyですが、一点だけ不満があります。
それは、Top Chartプレイリストの曲が日々更新されてしまうことです。
DJをしている私にとっては、どの月に何は流行っていたのかを知りたいので、1つのTop Chartプレイリ
基礎編:再帰処理
#自己紹介
初めまして。
本誌を訪問頂き有難うございます。
趣味で python を始めた中年おじさんです。
基礎から始めたくて記事を書き始めた今日この頃です。
本誌は基礎編 第三弾です。[**第一弾 基礎編:木構造の全探索(DFS/BFS)**](https://qiita.com/AKpirion/items/9a223254d628a5afca70)
[**第二弾 基礎編:基礎編:二分探索**](https://qiita.com/AKpirion/items/c70c55554ec187d2bf7e)#学習目標
今回は [**Leetcode:Recursion I**](https://leetcode.com/explore/learn/card/recursion-i/) の理解を目標とします。
どのように理解するかは、以下のアプローチで進めます。`テンプレートの暗記` =>
`記述の理解(イメージ作成)` =>
`自分なりのアプローチで再検証` =>
`理解の穴を埋める`試行錯誤を繰り返すことで理解が深まり、思考力が養われると思います。
#例題1