Python3関連のことを調べてみた2022年02月05日

Python3関連のことを調べてみた2022年02月05日
目次

Discord Botがエラーを吐いたときにエラーIDを発行して通知する その2

Discord Botでエラーが発生したときにコンソールをわざわざ見に行くの、めんどくさいですよね?
エラーが発生したときにユーザーにその旨を通知したいですよね?
IDを振って管理したいですよね?
__*それならコーデディングだ!*__
## しくみ
#### エラー発生時
1. on_command_errorでエラーを拾う
2. そのエラーに関する情報を専用のチャンネルに送信する
3. そのメッセージのIDを36進数に変換
4. 変換したIDをつけてエラー情報を実行者に返す

#### エラー情報取得時
1. 36進数のIDを10進数に直す
2. 直したIDを用いてエラー情報を取得し、そのメッセージのembedをそのまま送信する

こんな感じで。

## れっつこーでぃんぐ!

numpyとtracebackをインポートしておいてください。

“`py
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, commands.CommandNotFound):
awai

元記事を表示

多項式回帰の実装

#数式を使った説明
###多項式の一般形
$n$次の多項式は下記の式で表すことができる。この場合、$a_0, a_1, …, a_n$が関数のパラメータとなる。

“`math
f(x) = \sum_{k=0}^n a_k x^k
“`
###最小二乗法
最小二乗法とは、下記の式で表される二乗和$J$を最小にする、関数$f(x)$のパラメータを求めることである。
$t_j$は各データを表す。関数の出力と各データの差を2乗して総和をとることで、二乗和を表す。

“`math
J = \sum_{j=1}^m (f(x_j)-t_j)^2
“`
機械学習においては、上記に$\frac{1}{2}$を掛けて誤差とする、下記の二乗和誤差がよく使われる。$\frac{1}{2}$を掛けるのは微分する際に扱いやすくなるためである。

“`math
E = \frac{1}{2} \sum_{j=1}^m (f(x_j)-t_j)^2
“`
###最急降下法
多項式回帰の場合、二乗和誤差$E$は下記の式で表される。

“`math
E = \frac{1}{2} \sum_{j=

元記事を表示

FlaskForm を利用したフォームバリデーション

# WTForm,FlaskFormを使ってみたい
*FlaskFormを使うにあたり、あまり記事がなかったので備忘録もかねて記事にします。*
*入力フォームで送られてきたデータを受け取る動きを例にします*

*まず下準備*

“`index.py
from flask import Flask
from flask_wtf import FlaskForm
from wtforms import (StringField, PasswordField, BooleanField,
RadioField, SelectField,SubmitField, ValidationError)
“`
# フィールドの例
`StringField` : 文字列
`PasswordField` : パスワード
`BooleanField` : チェックボックス
`RadioField` : ラジオボタン
`SelectField` : セレクトボックス
`SubmitField` : 送信ボタン
`ValidationError` :

元記事を表示

Python リストが1次元か多次元か確認するときに便利なメソッド

# はじめに

リストの次元数によって処理を分岐しようとしたときに調べました

主に1次元リストを想定しているが、まれに2次元リストの処理もしたいときにどうすべきか考えて

# 方法

“`python
def how_dimensions(something_list):
if not isinstance(something_list[0],list):
print(‘1次元リスト’)
else:
print(‘多次元リスト’)

ls1 = [1,2,3]
ls2 = [ls1,ls1]

how_dimensions(ls1)
how_dimensions(ls2)
“`
“`
1次元リスト
多次元リスト
“`

元記事を表示

情報量の基本的な考え方

#情報量とは
情報量(エントロピー)とは、情報理論において情報を定量的に扱うために定義された概念である。
エントロピーは、もともと物理学の分野である熱力学や統計力学における概念である。情報理論において統計物理学で扱われるエントロピーと数学的にほぼ同じ計算式が現れたため、それを「エントロピー」と呼ぶようになった。

#選択情報量(自己エントロピー)
選択情報量は、あるできごとがどれほど起こりにくいかを表す尺度である。
あるできごと$E$が起こる確率を$P(E)$とする。このときの選択情報量$I(E)$は次の式で表される。

“`math
I(E)=-\log_2 P(E)
“`
選択情報量は確率の対数を負にしたものとして表される。対数の底には$2$を使うことが多いが、何を選んでも本質的な違いはない。
上記の式のように、できごと$E$の確率$P(E)$が小さい(珍しい)ほど選択情報量は大きくなる。
選択情報量をグラフにすると下記のとおりとなる。

![download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

fooddetection ~料理検知ライブラリの使い方~

以前、世界の料理の配色割合を調べていた時に画像から料理を抽出する作業が必要となったことがあった。
今回はその料理抽出作業をライブラリ化したので使い方をまとめてみた。
もし利用できそうな機会があれば是非利用してみて欲しい。

料理抽出作業とは

この記事で言う料理抽出作業とは一枚の料理画像から料理以外の要素をできるだけ排除し料理部分を残す作業のことである。

中華.jpg
↑ 料理抽出作業前画像
上の画像から料理部分だけを抽出し(背景などを削除したい)、下の画像のように背景など不要な部分を透明化させることを目的としている。

中華検知.png【Python】パッケージからクラスをimportする。モジュール名は省略可能

### 概要
Pythonのパッケージとモジュールのimportの方法に関してようやく腑に落ちたのでメモ。

#### 例:scikit-learnの graph_lasso_モジュールのGraphicalLassoクラスをimportする
https://github.com/scikit-learn/scikit-learn/blob/main/sklearn/covariance/_graph_lasso.py#L338

sklearn/covariance/graph_lasso_.py 内にGraphicalLassoクラスが定義されています。

今回の例において、各オブジェクトの名称は以下のように解釈できます。

>sklearn: パッケージ <- ディレクトリであり、\_\_init\_\_.pyが存在するため covariance: パッケージ <- ディレクトリであり、\_\_init\_\_.pyが存在するため graph_lasso_: モジュール <- graph_lasso_.py という名のファイルが存在する GraphicalLasso: クラス <

元記事を表示

DjangoでiCalendar(.ics)ファイルをダウンロードする方法

## はじめに
こんにちは、reimeiです。
先日Djangoで開発しているwebアプリケーションにてDBに保存しているスケージュールをiCalendarファイルに書き出して返す処理を実装しようとした際、つまづいたので共有しようと思います。

## 解決策
▼とりあえず、必要なライブラリをインストール

“`bash
$ pip3 install ics
“`

▼実装例

“`python
from ics import Calendar, Event
import arrow
import os
from django.http import HttpResponse

def download_icalendar_file(request):
calendar = Calendar()
event = Event()
event.name = “飲み会”
event.begin = arrow.get(“2022-2-3 20:00:00”, “YYYY-MM-DD HH:mm:ss”) \
.replace(tzi

元記事を表示

ModuleNotFoundError: No module named ‘モジュール名’のエラーが出た時の対処法

# 前提
モジュールを使おうとしてimportを行ったところ、ModuleNotFoundError: No module named ‘モジュール名’のエラーが出てしまい、先に進めなくなったので、その対処法の備忘録です。

## 実行環境
Python 3.9.5
pip 22.0.2
jupyter notebook 6.4.3
macOS

こちらに記載するコードはjupyter notebookに書き込む場合を記載しています。
jupyter notebookでは、先頭に!がついているときは、ターミナル操作になるので、jupyter notebookをお使いにならずターミナルやテキストエディタを使う場合、各自ターミナルでの操作になると読み替えてください。

# やったこと
パスがつながっていないのでは、と考えたので、以下の方法でパスの設定をしました。

“`
!pip show モジュール名
“`

すると以下の様な出力結果が出ます。

“`
Name: モジュール名
Version: バージョン番号
Summary: モジュールの説明
Home-page: URL
A

元記事を表示

超初心者がAtcoder ProblemsのB問題を128回から135回までpythonで解いてみた件【ほぼ自分用】

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

Guidebook

https://atcoder.jp/contests/abc128/tasks/abc128_b

“`python:practice.py
n = int(input())
restaurants = [list(input().split()) for _ in range(n)]
ans = []
for i in range(n):
ans.append([i+1,restaurants[i][0],int(restaurants[i][1])])
ans = sorted(ans, key=lambda x:x[2],reverse=True)
ans = sorted(ans, key=lambda x:x[1])
for ans_line in ans:
print(ans_line[0])
“`

最初にそれぞれのレストランの番号をインデックス番号+1でそれぞれ

元記事を表示

Python3エンジニア認定データ分析試験 合格体験記

#はじめに
2022年1月、Python3エンジニア認定データ分析試験に無事に合格できました。
私自身の背景を含めた合格までの勉強方法や、ポイントなどをお伝えできればと思います。
これから受験される方の、一助になれば嬉しいです。

#筆者の背景
・文系(数学的教養はかなり乏しいと思います)
・Pythonは実務では使用していません
・2021年10月にエンジニア認定基礎試験 合格済み

#試験の概要
Python3エンジニア認定データ分析試験は主教材である翔泳社出版の**「Pythonによるあたらしいデータ分析の教科書
」**から出題されます。
![スクリーンショット 2022-02-02 14.15.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1954118/649dee49-b01d-f3d6-77d6-6ab1e214e41f.png)
この教科書の内容から試験では、以下の範囲と割合で出題されます。
![SnapCrab_NoName_2021-11-8_18-46-22_No-00.pn

元記事を表示

超初心者がpythonでAtcoder Problemsを114回から解いてみた【9割自分用】

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

754

https://atcoder.jp/contests/abc114/tasks/abc114_b

“`python:practice.py (2)
s = input()
ans = 753
for i in range(len(s)-2):
temp = abs(int(s[i]+s[i+1]+s[i+2])-753)
if ans > temp:
ans = temp
print(ans)
“`

連続する3桁の整数をつながりとして抜き出して、753(753にできる限り近い数字を求めたいから)で引いた時の絶対値を最初に求めます。 次にその時点で最小の差と比べて、抜き出した値の方が753との差が小さいかった場合抜き出した値と753の差がansに入っていきます。

Christmas Eve Eve

https://atcoder.jp/contests

元記事を表示

はじめてのGoogle AIY Voice Kit⑥【サンプルコード実行編】

# はじめに
前回のラズパイSSH接続編の記事は[こちら](https://qiita.com/yuzuki6v6/items/c64453e15a5d4a700a22)から:information_desk_person:
今回はサンプルコード実行編です。
LEDの操作、ボタンの操作、スピーチ(発話)、マイクの機能を試していきたいと思います。

# サンプルコードでできること
サンプルコードは[公式サイト](https://aiyprojects.withgoogle.com/voice/#makers-guide–python-api-library)に記述してあります。
また、今回は[こちら](https://ohmyenter.com/cheat-sheet-for-google-aiy-voice-kit-v2-with-python/)のサイトも併せて参考にさせていただきました。

サンプルコードでは、以下の機能を確認することができます。

– LEDの操作
– LEDのオン・オフ
– LEDの点滅
– LEDの明るさ調整
– LEDの点滅形式
– L

元記事を表示

超初心者がAtcoder ProblemsのB問題を99から110まで解いてみる件【10割自分用】

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

Cut and Count

https://atcoder.jp/contests/abc098/tasks/abc098_b

“`python:practice.py
n = int(input())
s = input()
ans = 0
for i in range(1,n):
cnt = len(set(s[:i])&set(s[i:]))
ans = max(ans, cnt)
print(ans)
“`

まず、すべての切れる場所を全探索してset型にして重複を消す。次にどっちともにも共通する要素の数をlen(set(s[:i])&set(s[i:]))で調べ上げて、最大の数が入るようにmaxメソッドで比較し続ける

Stone Monument

https://atcoder.jp/contests/abc099/tasks/abc099_b

“`python:

元記事を表示

SymPyのシンボル生成について色々触れてみる

以前の記事でもSymPyのシンボル生成についてある程度触れていましたが、その記事で漏れている点などもぼちぼちあったため再度記事にまとめておきます。

インストール手順などは今回はスキップするため、必要な方は以下の記事などをご確認ください。

https://qiita.com/simonritchie/items/44242479f0df86fffff5

※記事の執筆者は理系出身ではないため数学の知識などで粗い点はご容赦ください。

# 使うもの

– Python 3.9.0
– Jupyter (VS Code上のものを利用)
– sympy==1.8

# Symbolクラスによるシンボル単体の作成

一番シンプルなシンボル単体の生成法としてはSymbolクラスを使う形となります。第一引数には基本的に割り当てる変数名と同じ名前の文字列を指定します。

“`py
from sympy import Symbol

x = Symbol(‘x’)
y = Symbol(‘y’)
“`

# symbols関数による複数シンボルの一括作成

symbols関数で複数のシンボルを同

元記事を表示

poetry installを色んな環境でストレスなく行うworkaround

# はじめに
`poetry` は `Python` のパッケージマネージャとしてデファクトになりつつある(個人的な感想)。

`poetry` では、以下の二つのファイルを使って、ライブラリを管理している
* `pyproject.toml` ・・・ 使っている `Python` やライブラリのバージョンを管理
* `poetry.lock` ・・・ 各ライブラリの実際のバージョンや依存関係を管理

`poetry.lock` ではライブラリのハッシュ値も持つことで、 `poetry install` 時のライブラリの探索時間を短くしている。

# 問題点
`poetry.lock` はライブラリごとのハッシュ値を持っているので、インストールする先のOSが異なったりすると、以下のようなエラーになる。

“`bash
• Installing libclang (12.0.0): Failed

RuntimeError

Retrieved digest for link libclang-12.0.0-2-py2.py3-none-win_amd64.whl(sha2

元記事を表示

Python 簡単にランダムな名前(文字列)を生成する

# 参考

[Python実践入門 ](https://amzn.to/2zBKOFm)

# 方法1 uuid

標準モジュール

“`python
import uuid

for i in range(10):
print(str(uuid.uuid4().hex))
“`
“`
ad37a981e8774484823d3446c1d7cf3a
69b36e62cebd49afa138241c1c9d6282
8329326e86f4417c817bfe372769a96f
2fb71832bb7242c6a7ba7d78c5405cf4
e4bcea0b3f4e45e1a093923145f2488c
8ee8734a6abd4e50a21c923c83f3c1eb
3980c4574fc044dcb18e0802abaf11e1
a3f655f41a6a4c7dafa9d722676a0a3c
a97c6c33963f4795907b71b3d4f04b2b
040e31e4ac804de7b8fd81cf8308a3c4
“`

# 方法2 names

元記事を表示

Wordleは4つの単語を覚えるだけで必ず正解できる

# Wordleとは?

フィードバックを頼りに、隠された 5 文字の英単語を当てるゲームです。
要は「マスターマインド」や「ヌメロン」等と呼ばれるゲームの英単語版です。

知らない方でも以下のような奇妙なツイートは目にしたことがあるかもしれません。
![スクリーンショット 2022-01-29 19.53.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123809/c2650482-269b-3b99-b792-283a59cca814.png)

# この記事は何?

Wordleにおいて、最初に**ある4つの単語を入力すれば 100% 正答にたどりつける**ことが Python を使った解析でわかりました。

具体的には、
– **それら 4 つの単語を入力した時点で解の候補が平均 1.1 個まで絞られる
– 96% 以上の確率で 5 回で正答できる
– 100% の確率で 6 回以内に正答できる**
といった感じです。

本記事では、それらの単語をどのように探したかをザックリ解説しつつ(ネ

元記事を表示

超初心者がAtcoder ProblemsのB問題を86から96まで解いてみる件【10割自分用】

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

B – 1 21

https://atcoder.jp/contests/abc086/tasks/abc086_b

“`python:practice.py
a,b = input().split()
num = a+b
if (int(num)**0.5).is_integer():
print(“Yes”)
else:
print(“No”)
“`

数字を0.5乗してルートを乗っけるのと同じことをして、もし平方数だったら、integer型になるのでis_integer()で判定する

B – Coins

https://atcoder.jp/contests/abc087/tasks/abc087_b

“`python:practice.py
a = int(input())
b = int(input())
c = int(input())
x = int(input

元記事を表示

Python が削除された macOS 12.3 以降で Python 環境をパッケージングする

現時点(2022/02/01)では,macOS の最新版は macOS Monterey 12.2 ですが,次期 macOS アップデートの 12.3 では,macOS の Python 環境に大きな変化がもたらされることになりました。

* [ニュース](https://eclecticlight.co/2022/01/29/looking-ahead-to-macos-12-3-python-dropbox-and-onedrive-changes/)

これは,[2019年に予告されていた「スクリプト環境の粛正」](https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes)がいよいよ始まったのでしょう。

> * Scripting language runtimes such as **Python**, **Ruby**, and **Perl** are included in macOS for compatibility with le

元記事を表示

OTHERカテゴリの最新記事