- 1. 色々な言語の Dictionary のキーの型の扱いについて調べてみた
- 2. ABC346 with Python(A~F)
- 3. 文章生成アプリ(PYTHON&DJANGO)
- 4. 『モデルベース深層学習と深層展開』読み会レポート#0
- 5. 誕生日のパラドックスをpythonを使って検証してみた
- 6. 【Python】エラー「IndexError: list index out of range」を出ないようにするorエラー捕捉するコード
- 7. Python の dict のキー 1.0 と 1 は同一視される(そして True も!)
- 8. LIMEによる機械学習モデルの局所説明
- 9. PythonでExcelグラフを出力したのに最後のデータが反映されない問題を解決しました
- 10. ABC346、D問題の解説
- 11. 連想配列(query)、ソートと検索(通常・query)
- 12. pythonのfor文(match文)python3.10~
- 13. [Python3]csvファイルからjsonファイルを作成する方法
- 14. 【Python】issubsetの使い方と注意点。サンプルコードで解説
- 15. Redis・Pythonで検証用データを作る(セット型で大量の要素を登録する)
- 16. pythonのコメントアウト
- 17. クエリシリーズ > 連想配列
- 18. 「ipinfoのAPIアクセストークン」を取得する方法
- 19. 【Python】ttkbootstrapでGUIアプリ制作&改修
- 20. pygameでの文字列の位置合わせ
色々な言語の Dictionary のキーの型の扱いについて調べてみた
Dictionary や object のキーに複数の型を指定した場合、どういった扱いになるのかが非常に気になったので、自分の知っている範囲の言語で試してみました!
# Python の場合
“`python:Python
a = {}
a[1] = “int”
a[1.0] = “float”
a[“1.0”] = “str”
# => {1: ‘float’, ‘1.0’: ‘str’}
“`int と float は同一視されるようです。Python では `1 == 1.0` が成立するので、これは合理的な気もしますね。使う側は非常に安心できます。他にも、True, False, Fraction, Decimal なども同一視されるようです。
> Numeric values that compare equal have the same hash value (even if they are of different types, as is the case for 1 and 1.0).
https://docs.python.org/3.5/lib
ABC346 with Python(A~F)
今回は、初めてのQiita記事投稿がてら、ABC346のA-F問題までの解説をPythonで書いてみました。誰かのお役に立てれば幸いです。。。
# A – Adjacent Product
## 問題
$N$ 個の整数 $A=(A_1,A_2,\cdots,A_N)$が与えられます。
また、$B_i = A_i \times A_{i+1} (1 \leq i \leq N-1)$ と定めます。
$B_1,B_2,\cdots,B_{N-1}$ をこの順に空白区切りで出力してください。https://atcoder.jp/contests/abc346/tasks/abc346_a
## 考察
隣り合っている要素同士の積を計算してリストに代入、それを答えとして表示する。## コード
“`python:A.py
N = int(input())
A = list(map(int, input().split())
B = []
for i in range(N – 1):
B.append(A[i] * A[i + 1])
print(*B)
“`
#
文章生成アプリ(PYTHON&DJANGO)
生成APIが流行しているので、PYTHONとDjango環境でアプリを作成してみた。
まだ初回なのでプロンプトを送ったら、プロンプトが戻ってくるだけのシンプルなものを。基礎中の基礎だが、最初は生成APIというより、むしろフレームワークのDjangoの特徴を把握する方に苦労した。苦労の結果だけあって、Djangoは生成APIのアプリ作成にめちゃくちゃ相性がいいことがわかる。
DjangoでWEBサイトを構築するのはLaravelよりずっと工数がかかるだろう、しかしLaravelで生成APIアプリを量産するよりもはるかに楽にアプリが作成できる。プロジェクトの考え方が違う。DjangoはシンプルなWEBアプリを量産しやすいフレームワークという印象をもった。なんせアプリ作成コマンドでアプリ構造ができ、プロジェクトフォルダに登録するだけでいいのだ。あとはPYTHONファイルに生成APIアプリを呼び出せばいいだけ。あまりに簡単なのでゼルダの伝説で武器をクラフトしている、アトリエシリーズで錬金しているような感覚。あのAPIとあのAPIを組み合わせたら、こんなことできんじゃん!!っていう。い
『モデルベース深層学習と深層展開』読み会レポート#0
# 概要
– オンラインで開催している[『モデルベース深層学習と深層展開』読み会](https://majime-ni-study.connpass.com/event/)で得られた知見や気づきをメモしていく
– ついでに、中身の理解がてらJuliaサンプルコードをPythonに書き直したコードを晒していく
– 自動微分ライブラリにはJAXを使用する# 第0回
## 大まかな内容
– モデルベース深層学習と深層展開の概説
– 上記がどんな事に応用可能か
– 微分可能プログラミングとしての実現方法について
## 議論になったこと
### 1.1.1節 あたり
– モデル駆動アプローチの実例
– 制御だと運動の法則等からモデリングする
– 通信だと、電波や媒質(空気など)を支配する法則からモデリング
– アンテナなど部品は物理系の法則
– 通信だと周波数領域のパラメタの同定に学習要素があるかも
– 図1.1を眺めながら
– 真ん中の図はNNの重みも学習可能パラメータでは?
– おそらくそう。NN以外の計算に埋め込んだパラメ
誕生日のパラドックスをpythonを使って検証してみた
# 概要
**誕生日のパラドックス**とは、「同じ誕生日の人がいる確率が50%を超えるのは、何人集まれば良いか?」という問題において、結果が直感と反しているというパラドックスです。
確率を計算すると以下の結果になります。
– 40人の場合は、`約89.12%`
– 23人の場合は、`約50.73%`個人的にも納得できないので、Pythonを使って検証をしていきたいと思います。
# 計算式
同じクラス内に1組以上の誕生日が一致する確率は以下の式から導き出せます。(nは1クラスの人数)
“`math
p(n) = 1 – \frac{365!}{365^n(365-n)!}
“`# コーディング
## 関数①:計算式を基にコーディング
まずは、計算式を基にプログラムを書いてみました。
“`python
def birthday_paradox_prob_calc(n: int) -> float:
”’
誕生日のパラドックスの計算を行う
Args:
n (int): 人数
Returns:
f
【Python】エラー「IndexError: list index out of range」を出ないようにするorエラー捕捉するコード
# 概要
`IndexError: list index out of range`エラーに遭遇し、このエラーを出ないようにするor捕捉してあげることでエラーをキャッチできるコードを3つ作成したので紹介します。# `list index out of range`とは
以下のコードを実行すると、リストの最初の要素の`fruit_name`を取得できます。“`py
def get_first_data_of_list(data, key, sub_key):
value = ”
if key in data:
if sub_key in data[key][0]:
value = data[key][0][sub_key]
return valueinformation = {
“fruit”:
[
{“fruit_name” : “apple”,
“fruit_price” : “200” },
{“fruit_name” : “banana
Python の dict のキー 1.0 と 1 は同一視される(そして True も!)
Python のキーで、int と float、つまり整数と浮動小数点は同一視されるようでした。たとえば 1.0 と 1 は同一視されるようです。仕組みは、謎です。
# コード
“`python
a = {}
a[1] = 100
a[1.0] = 200
print(a) # => {1: 200}
“`キーは最初に指定した値が採用されるようです。
“`python
b = {}
b[1.0] = 300
b[1] = 400
print(b) # => {1.0: 400}
“``__hash__` の値を見てみましょう。
“`python
(123).__hash__() # => 123
(123.0).__hash__() # => 123
(123.456).__hash__() # => 1051464412201451643
“`なるほど! 驚きですね!
Python 3.5 のドキュメントに書いてありました。
> Numeric values that compare equal have the same hash value (
LIMEによる機械学習モデルの局所説明
# はじめに
こんにちは、@sasshi_iです。本日はXAIの手法の1つであるLIME(Local Interpretable Model-agnostic Explanations)について説明したいと思います。
LIMEは**局所説明**の手法です。
LIMEはある入力に対して機械学習モデルの出力に寄与した特徴量を算出します。
局所説明って何?という方はこちらの記事をご覧ください。https://qiita.com/sasshi_i/items/400b7672d8b80bfc3a28
それでは、LIMEがどのように機械学習モデルを説明するのかを説明していきます。
# LIMEとは?
LIMEは、**複雑な機械学習モデルを説明するための解釈可能な機械学習モデルを作ります**。LIMEがどのように機械学習モデルを説明しているかみていきましょう。
## どのようにして解釈可能な機械学習モデルを得るのか
LIMEは、複雑な識別境界や内部ロジックを持つ機械学習モデルであっても、説明対象の近傍に限れば、単純な(解釈可能な)機械学習モデルで近似できると仮定しています。
PythonでExcelグラフを出力したのに最後のデータが反映されない問題を解決しました
## PythonのExcelグラフはめちゃめちゃ癖が強かったというお話
私は毎年読書の記録をスプレッドシートでつけています。年末には集計して読了数、購入媒体、ジャンルなどをグラフ出力しているのですが、Pythonでグラフのひな形を書いておいて出力したら楽かな?と思い立ち、PythonのExcelグラフ出力を試みてみました。
とりあえずラフにデータを書き込んで出力させてみたのですが、どういうわけか3つ項目があるうちの2項目までしかグラフに反映されず詰まってしまいました。
#### テスト用にラフに作ったExcelの元データ(2024read.xlsx)
![xl01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984316/528c0b35-1e51-b07f-64df-d8b59e3ac6d6.jpeg)#### パイチャートを出力させるために書いたコード
※openpyxlライブラリをインストールする必要があります“`python
import openpyxl
from op
ABC346、D問題の解説
## 0. はじめに
前処理による解法です。やってることは[公式解説](https://atcoder.jp/contests/abc346/editorial/9639)と同じですが、公式解説より理解が容易だと思います。## 1. 問題とACコード
https://atcoder.jp/contests/abc346/tasks/abc346_dhttps://atcoder.jp/contests/abc346/submissions/51620912
## 2. 解法概要
1. 与えられた文字列Sを、0と1が交互に出現する文字列と1と0が交互に出現する文字列、文字列「0101…」と「1010…」に変更することを考え、そのための累積コストを計算します。
1. 「0101…」と「1010…」の文字列を各位置でつなぎかえると、問題文で求められている**良い文字列**ができます。(例、5文字の文字列の4文字目以降をつなぎかえる)
* 01001
* 10110
1. 文字列「0101…」と「1010…」を作成するための累積コストを前処理と
連想配列(query)、ソートと検索(通常・query)
https://paiza.jp/works/mondai/query_primer/query_primer__map_normal
何も見ずに解いたもの。
もっともクラスを使えばもっとスマートにかけるのかもしれないですが。
一応辞書という意味ではこんな感じになるのかなと。“`py
N,K = map(int,input().split())
A = dict(input().split() for _ in range(N))
for _ in range(K):
command = input().split()
if command[0] == ‘call’:
print(A[command[1]])
elif command[0] == ‘leave’:
del A[command[1]]
elif command[0] == ‘join’:
A[command[1]] = command[2]
“`https://paiza.jp/works/mondai/query_prime
pythonのfor文(match文)python3.10~
phpなどでは、子の変数にはこの数字しかない!答えが一つしかないときはif文よりswich文。
swich文がpythonでは実装されていなかったが、python3.10よりmatch文として実装。
“`py
face = [‘目’,’口’,’鼻’,’喉’,’耳’,’手’]
for f in face:
match f:
case’目’:
print(‘eyes’)
case’口’:
print(‘mouth’)
case’鼻’:
print(‘nose’)
case’喉’:
print(‘throat’)
case’耳’:
print(‘ear’)
case n:
print(n + ‘は存在しない’)
#出力結果
eyes
mouth
nose
throat
ear
手は存
[Python3]csvファイルからjsonファイルを作成する方法
## 要 旨
python3においてcsvファイルからjsonファイルを作成する方法について記述します。
## 実施要領
data.csvファイルからdata.jsonファイルを作成するpython3コードの一例は、以下の通り。
“`python3:csv2json.py
#! /usr/bin/env python3
# coding: utf-8
import pandas as pd#入力するのcsvファイルの読み込み
inputFileName = “data.csv”
df = pd.read_csv(inputFileName, encoding=”utf-8″)#JSONのレコード形式にて出力・保存
outputFileName = “data.json”
df.to_json(outputFileName, orient=”records”)
“`
## 結 言
今回は、python3においてcsvファイルからjsonファイルを作成する方法について記述しました。
【Python】issubsetの使い方と注意点。サンプルコードで解説
# 概要
Pythonの`issubset`(イズサブセット)を使ってみたので、紹介。`issubset`とは、あるセットが他のセットの部分集合(すべての要素が他のセットに含まれている)であるかどうかをチェックするためのメソッド。
実際にコードを見てみるとわかりやすいです。
# サンプルコード解説
“`py
# セットの定義
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}# set1がset2の部分集合であるかチェック
is_subset = set1.issubset(set2)print(is_subset) # Trueを出力
“`上記の場合、`set1`が`set2`の部分集合であるかをチェックしています。
`set1`の全ての要素が`set2`に含まれているため、`True`ですね。### リストに対して使用する場合は`set()`を使う
“`py
# リストの定義
fruits_in_fridge = [‘apple’, ‘banana’, ‘lemon’, ‘mango’, ‘grape’]
fruits
Redis・Pythonで検証用データを作る(セット型で大量の要素を登録する)
## はじめに
Redisの検証を行う際に、検証用のデータを作成する必要が生じまして、その方法を考えました。
文字型やリスト型などで、キーと値だけ定義できればよいならredis-benchmarkが使えるのですが、redis-benchmarkでは以下のようなことはできないようでした。
* セット型で1つのキーに複数の要素を持たせる
* キーに有効期限を設定する他にも、ソート済みセット型やHyperLogLog型などを登録してみたいと思いましたが、いずれもredis-benchmarkではできないようでした。そもそも、redis-benchmarkはRedisのベンチマークツールです。
今回はSet型で1つのキーに複数の要素を持たせるようにしたかったので、Pythonのクライアントライブラリredis-pyを使ってみました。
1つのSet型に1000万・2000万という要素を持たせると、キーの削除には数秒かかり、その間はブロックが発生します。このブロックをわざと発生させるための方法を考えていて、Set型に1000万単位で要素を登録することを思いついて、その処理にクライアン
pythonのコメントアウト
## コメントアウト
“`py
#一行だけ“””
複数行
複数行
複数行
“””
“`
クエリシリーズ > 連想配列
https://paiza.jp/works/mondai/query_primer/query_primer__map_easy
辞書をつかった問題だと直感してたのだけど、自分自身ちょっと忘れてたので前に書いた記事にコメントくれてたのを思い出したので下記で復習(ありがとうございます)
https://qiita.com/Atsulabo/items/081ef794c729bb6709e6
辞書を作るにはdict。これ勉強。
これを思い出す前に{}の内包表記でなんとかしようとしてました。。。
というわけで、“`py
N,K = map(int,input().split())
A = dict(input().split() for _ in range(N))
#次の連想配列のために出力
#{‘1’: ‘Sin’, ‘2’: ‘Sakura’, ‘3’: ‘Kayo’, ‘4’: ‘Yui’}
for _ in range(K):
print(A[input()])
“`こうですね。
しかしですね、今回は辞書、ではなく連想配列。なので、
ちょっと違うんで
「ipinfoのAPIアクセストークン」を取得する方法
### 環境
>iMac macOS Ventura13.2
python 3.10.4### 概要
>ipinfo.ioは、IPアドレスに関する情報を提供するウェブサイトです。
このサイトでは、特定のIPアドレスの地理的な位置、ネットワークプロバイダー、使用されているデバイスなどの情報を取得することができます。### ipinfo.ioのトークンを取得するまでの流れ
#### 1、無料アカウントにサインアップ :
https://ipinfo.io/signup#### 2、必要項目に入力(私は、Continue with Googleで始めました)
IPinfo Loginで「次へ」をクリックしたから メールアドレス、パスワードを入力
Googleを使わない場合は、随時項目に入力します。
![スクリーンショット 2024-03-21 8.37.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634708/47bf3b83-b4a2-a39e-6bcd-1e66197ce77d.pn
【Python】ttkbootstrapでGUIアプリ制作&改修
# GUIアプリの概要
以前投稿したアプリを改修したのでそれを共有したいと思います。
以前投稿したアプリは以下の記事になります。https://qiita.com/kensaka1228/items/3663fc18ed7c893feeee
ttkbootstarpのGoogle検索をしたら二番目にヒットします。
是非合わせてお読み下さい。## 改良点
ソースコードをクラスで作成
QRコードの作成を自分で指定した場所に作成できるように改修
日記を書けるように改修## アプリ概要
### QRコード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/2bf43cfc-8c0e-9e9a-38f2-5c5ae525fee4.png)### 勤怠計算
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/441b8800-fa5c-6b9f-dddf-197
pygameでの文字列の位置合わせ
# はじめに
pythonのゲーム用ライブラリpygameでちょっとしたゲームを作成したのだが、文字列の位置合わせに若干時間を要してしまったのでまとめた。# 環境
次の環境で確認した+ pygame V2.5.2
+ Python V3.9.13
+ Windows Windows Pro (64bit) 22H2:::note info
pygameモジュールのバージョンを確認するコマンド“`
python3 -m pip show pygame
“`
:::# フォントを指定して文字列を表示する
以下のプログラムを実行すると
“`py
import pygameBLACK = (0,0,0) # 黒色
RED = (255,0,0) # 赤色
WHITE = (255, 255, 255) # 白色WIDTH = 320 # 画面の横幅
HEIGHT = 240 # 画面の高さX = WIDTH/2