Python関連のことを調べてみた

Python関連のことを調べてみた

Pythonの備忘録 (初心者) <数学の基礎計算(三角関数)>

僕がPythonのmath library使い方をド忘れした時のための備忘録を作成します。

:::note warn
あくまで記事は使用例です
厳密さを必要とする場合は下記LINKを参照してください。
https://docs.python.org/ja/3/library/math.html
:::

math libraryのimport

“`python
import math
“`
:::note info
:::

三角関数の使用例

“`python
theta = math.radians(45)
print(theta)
“`
:::note
出力
0.7853981633974483
:::
角度からラジアンに変換
詳細は下記wiki参照
[^KEY]:
https://ja.wikipedia.org/wiki/%E4%B8%89%E8%A7%92%E9%96%A2%E6%95%B0

三角関数の計算結果

“`

元記事を表示

【Math編】ac-Library-pythonを軽くまとめる

# はじめに
本記事はac-Library-pythonを使用するにあたり、引数やメソッド・計算量など最低限の情報をまとめたもののデータ構造編になります。
「ドキュメントが小難しく読んでいられない・結局どういうこと?」といった人を対象としています。

## Math
数論的アルゴリズム達
“`python
from atcoder.math import {function}
“`
* inv_mod(x: int, m: int) → int
$xy \equiv 1(mod\ m) $となり、$0 \leqq y < m$を満たす$y$を返す `x`と`m`が互いに素でない場合`AssertionError`となる 計算量:$O(\log m)$ * crt(r: List[int], m: List[int]) → Tuple[int, int] 中国剰余定理 未知数`x`を`m[i]`で割った余り$r[i]$の配列を引数にとり、(`x`,`lcm(m)`)を返す 答えがない場合は(0,0)、配列の長さが0のときは(0,1)を返す 計算量:$O(n\log lcm (m)

元記事を表示

【データ構造編】ac-Library-pythonを軽くまとめる

# はじめに
本記事はac-Library-pythonを使用するにあたり、引数やメソッド・計算量など最低限の情報をまとめたもののデータ構造編になります。
「ドキュメントが小難しく読んでいられない・結局どういうこと?」といった人を対象としています。

# データ構造
`p`,`left`,`right`などの位置を表す引数は`0-index`です。
単位元とは、二項演算`op`を行う際、結果に影響しないような値です。例としてこのような値があります。

| 二項演算 | 関数 | 単位元 |
|:-:|:-:|:-:|
|最小値|min(x,y)|float(‘inf’)|
|最大値|max(x,y)|-float(‘inf’)|
|区間和|x+y|0|
|区間積|x*y|1|
|最大公約数|math.gcd(x,y)|0|

## FenwickTree
“`python
from atcoder.fenwicktree import FenwickTree
“`
長さ$n$の配列に対し区間の要素の総和を$O(\log n)$で計算できる。配列の操作と和の計算を行う場合に有用。

元記事を表示

TensorFlow Keras Layerにおける行列の積:MatMul (Self-Attention)

“`python
inputs = keras.Input(shape=(32, ))
v = layers.Dense(width)(inputs)
k = layers.Dense(width)(inputs)
q = layers.Dense(width)(inputs)
v = keras.layers.Reshape((-1, 1))(v) # shape: [batch, 32, 1]
k = keras.layers.Reshape((-1, 1))(k) # shape: [batch, 32, 1]
q = keras.layers.Reshape((1, -1))(q) # shape: [batch, 1, 32]
kq = layers.Lambda(lambda x: tf.matmul(x[0], x[1]))([k, q]) # shape: [batch, 32, 32]
kq = layers.Softmax()(kq)
outputs = layers.Lambda(lambda x: tf.matmul(x[0], x[1]))([kq, v])

元記事を表示

位相と振幅をプロットしたい!

## はじめに
毎回忘れて調べるので備忘録兼コピペ用として書きます.
Python を用いて,複素数のデータを入力として,位相及び振幅をプロットします.

## 環境
* Python 3.11
* numpy 1.26.3
* matplotlib 3.8.3

## 方法
`z` を生成して,プロットする.
必要そうなラベルなどはすでに設定済みなので,適宜変更してください.
“`Python
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,4*np.pi,100)
z = np.exp(1j*x)
r = np.abs(z)
theta = np.angle(z)

fig, ax = plt.subplots(2, 1)
ax[0].plot(r)
ax[0].set_xlabel(“time”)
ax[0].set_ylabel(“amplitude”)
_, y_max = ax[0].get_ylim()
ax[0].set_ylim(0,y_max)
ax[1].plot(the

元記事を表示

データサイエンティストはテストコードを書いてコーディング規約を守ろう

# データサイエンティストの書くコードは汚い
あなたはデータサイエンティストでしょうか?この記事ではデータサイエンティストが学んでおくべきソフトウェア開発技法のうち、筆者が特に重要と考えることについて実践的に学んでいきます。

あなたがデータサイエンティストという肩書きで働いている場合、あなたが書いているコードは汚い可能性が高いでしょう。どう汚いかというと、ソフトウェアエンジニアにコードをそのまま渡し、ソフトウェアやシステムに組み込んでくれと頼んだ場合、まず間違いなく嫌な顔をされます。ソフトウェアエンジニアからデータサイエンティストに転向した人は大丈夫でしょう。この記事で学ぶことはありません。

データサイエンティストという職業は、Pythonをゴリゴリと書くエンジニアっぽい人もいれば、BIツール等を駆使するコンサルタントっぽい人もいると思います。この記事では、前者のエンジニアっぽいデータサイエンティストを対象として書かれています。具体的には、AI・DXソリューションを行うシステムを開発してビジネス的な価値を上げることを最終目的として、その工程の最序盤にて以下の業務を実施する人です。

元記事を表示

Pythonの備忘録 (超初心者)

僕がPythonの使い方をド忘れした時のための備忘録を作成します。

Pythonのif文では制御構造を使用して、同じコードブロックを正誤判定を実行することができる
![スクリーンショット 2024-04-22 14.24.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575336/19c43b75-d615-a729-5d44-3510f747cffc.png)

:::note warn
あくまで上記はイメージです
厳密さを必要とする場合は下記LINKを参照してください。
https://www.python.org/
:::
今回はif文の使い方の基本を書き下ろしておきます。

if文を設定

“`python
if 5/2 = 2.5
print(“5は2で割った時2.5になります”)
“`
:::note alert
エラー
if 5/2 = 2.5
^
Sy

元記事を表示

共分散(covariance)

## 共分散(covariance)
・2つの変数間の相関関係を表す指標
・次回紹介する相関係数を求めるのに重要な指標

まずは1変数の分散がどのようになるか考えてみましょう。
**1変数の分散**

“`math
s^2_x = \frac{1}{n}\sum^n_{i=1}(x_i-\bar{x})^2 = \frac{1}{n}\sum^n_{i=1}(x_i-\bar{x})(x_i-\bar{x})
“`
![1変数の分散(x軸).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780659/9eb9b9b9-b78d-f073-a3a0-6173b34d6dc3.png)

“`math
s^2_y = \frac{1}{n}\sum^n_{i=1}(y_i-\bar{y})^2 = \frac{1}{n}\sum^n_{i=1}(y_i-\bar{y})(y_i-\bar{y})
“`
![1変数の分散(y軸).png](https://qiita-image-store.s3.a

元記事を表示

【Atcoder】ABC 128 B問題

# コンテスト名

AtCoder Beginner Contest 128

https://atcoder.jp/contests/abc128

# 考えたこと
“`python
n=int(input())
l=[]
for i in range(n):
s,p=map(str,input().split())
p=int(p)
l.append([s,p])
“`
B問題だし余裕だろ!!…と思ったが

辞書順に早いかどうかをどうやって判別するか?

“`python
dictionary_sort = sort(l, key=lambda x: x[0])
print(dictionary_sort)
“`
出力
“`
[[‘kazan’, 50], [‘kazan’, 35], [‘khabarovsk’, 20], [‘khabarovsk’, 40], [‘moscow’, 10], [‘moscow’, 60]]
“`
なんか普通にsortされた。
文字列をsortすると辞書順になるみたいだね*1

ここからどうやって文字列が

元記事を表示

C++でPythonのrange(n)をなるべく簡潔に実現

# 目標
Pythonの`for i in range(n)`と同等のものをC++の範囲ベース`for`を用いて`for(auto i:range(n))`と書けるようにします.つまり,次のforループと同じ動作をするものです.
“`C++
for(int i = 0; i < n ; ++i) ``` # 方針 あらかじめ0,1,...,n-1が格納された配列等を用意しておけば,比較的簡単に実現できるのですが,この方法では$O(n)$のメモリと実行時間が必要となります.たとえforループが早期に中断された場合でも,これらのコストが発生します。そこで,必要に応じてlazyに生成する方法を,なるべく簡潔に実現します. # イテレータを作る 例えば,下の範囲ベースのforを実行すると,0からn-1が表示されるようにします. ```C++ for(const auto i: range(n)) std::cout << i << "\n"; ``` 同様の動作をするイテレータベースの`for`は次のように書くことができます. ```C++ for (auto it =

元記事を表示

UMAPをもちいたネットワークデータの次元削減

# UMAPとは?

UMAP(Uniform Manifold Approximation and Projection)は、2018年に提案された非線形次元削減手法です。UMAPは、リーマン多様体の概念に基づいており、高次元データを低次元空間に埋め込む際に、データの位相的構造を保持することを目的としています。

UMAPは、t-SNEと比べて、より高速に次元削減を行うことができ、大規模なデータセットに対して適用可能です。
また、埋め込み空間での距離関係が元の高次元空間での距離関係をより忠実に反映するという利点があります。

https://qiita.com/ymgc3/items/bad5e2ba99e11f3f4c9c

### 実装例.1

この例では、scikit-learnのdigitsデータセットを使用しています。Pythonライブラリは「umap-learn」を用いて、64次元の特徴量を2次元に削減し、結果を散布図で可視化しています。

“`python
import numpy as np
import matplotlib.pyplot as plt
fro

元記事を表示

regression_report関数を作ってみた

classification_reportがあるのに対してregression_reportが無いのが不便なので作ってみました。
なお補正R2についてはこちらの記事を参考にしました。

https://qiita.com/pnd642/items/089143957de635df6444

# 関数
“`Python3
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_squared_log_error
import numpy as np
def adjr2_score(y_test, y_pred, x):
return 1 – (1 – r2_score(y_test, y_pred)) * (len(y_test) – 1) / (len(y_test) – len(x.columns) –

元記事を表示

【Python】基盤地図情報のDEMデータをXarrayで読み込んで可視化する

# はじめに
国土地理院が公開している[基盤地図情報](https://www.gsi.go.jp/kiban/)の[数値標高モデル(DEM)](https://fgd.gsi.go.jp/download/ref_dem.html)を[Xarray](https://docs.xarray.dev/en/stable/)で読み込みたいとき、次の2つの手順を踏む必要があります。

1. XMLで提供されるDEMをGeoTIFFに変換する
1. 複数のGeoTIFFファイルを結合し、Xarrayのデータ形式( `xarray.DataArray` )として読み込む

手順1は、既に[Pythonを用いた基盤地図情報 数値標高データのgeotiff変換](https://qiita.com/HidKamiya/items/66b1d98503301446460c)という記事などで詳しく取り上げられています。ここでは、主に手順2の方法を紹介します。

# XMLからGeoTIFFへの変換
まず、[基盤地図情報からDEMデータをダウンロード](https://fgd.gsi.go.jp/dow

元記事を表示

続・Chromaで埋め込みを体感してみる~日本語対応編~

## 最初に

以下の記事の続編です。

https://qiita.com/ak-sakatoku/items/5288af8b88ba6cbe856a

## 今回試すこと

前回の記事では英語の文章をハードコーディングしていました。
今回はファイルを埋め込みして、なおかつ日本語対応してみようと思います。

## Python環境の構築

今回もAnaconda環境での構築を想定しています。
condaだと新しいライブラリが使えないことがあるので、前回と同様にpipでパッケージを導入しています。

“`sh
conda create -n embtest python=3.8
conda activate embtest
pip install chromadb streamlit
pip install sentence-transformers
“`

“`pip install sentence-transformers“`が前回からの差分です。
日本語対応している埋め込みモデルを自分で選ぶためにSentence Transformersという

元記事を表示

Python Cmap チートシート

https://github.com/sammrai/qiita_cmap

# cmaps

## Accent

“`python
sns.heatmap(df, cmap=’Accent’)
“`

![](https://raw.githubusercontent.com/sammrai/qiita_cmap/main/images/Accent.png)

## Accent_r

“`python
sns.heatmap(df, cmap=’Accent_r’)
“`

![](https://raw.githubusercontent.com/sammrai/qiita_cmap/main/images/Accent_r.png)

## Blues

“`python
sns.heatmap(df, cmap=’Blues’)
“`

![](https://raw.githubusercontent.com/sammrai/qiita_cmap/main/images/Blues.png)

## Blues_r

“`python
sns.heatm

元記事を表示

[ドラフト] Debian イメージにおける graph-tool のインストール方法

グラフライブラリ `graph-tool` は依存関係として非Pythonライブラリのインストールを必要とするため、単純に `pip` ではインストールできない。ざっくりとした方法がこちら

1. Debian イメージ (たとえば bookworm) からコンテナを立ち上げる。立ち上げるのは VS Code の dev container でも可
1. コンテナにログインする
1. `/etc/apt/sources.list.d/debian.sources` を以下のように編集。`Suites` に `experimental` を足す:
“`text
Types: deb
# http://snapshot.debian.org/archive/debian/20230919T000000Z
URIs: http://deb.debian.org/debian
Suites: bookworm bookworm-updates experimental
Components: main
Signed-By: /usr/share/ke

元記事を表示

凹型領域内の一様乱数を用いた点のばら撒き方

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3638255/002771ec-fe08-8681-0b26-3c588f4dce9e.png)

| 項番 | 目次 |
|:—-:|:————-|
| 1 | [目的](目的) |
| 2 | [結論](結論) |
| 3 | [手順](手順) |
| 4 | [最後に](最後に) |

# 目的
ゲームフィールド内の**ランダムな地点**にアクションを起こしたかったため, 問題解決を一般化した**アルゴリズム**を作成しました.
また、**凹型**に対応した一様分布アルゴリズムが記載された**日本語ドキュメント**を見つけられなかったため、この記事を公開しようと考えました.

# 結論

**多角形を三角形分割する**アルゴリズムと, **三角形内の一様分布**アルゴリズムを用いることで, 凹凸対応の多角形一様分布を実現しました.

コード全文

※テストコ

元記事を表示

個人開発記録 2024/05/06(djangoでログイン機能を実装)

## 目的

* とにかくやりきることが一番の目的
* 毎日発信することで、発信する習慣作り
* 個人開発をやりきることで、実績作り

## 開発するもの

X(旧Twitter)のパクリ

## 構成

* バックエンド
* python
* django REST framework
* DB
* postgreSQL
* フロントエンド
* React

## 本編

今回はログイン画面を作成していきたいと思います。

### バックエンド

以下を参考にログインのバックエンド処理を組んでいきます。

https://qiita.com/ryo-keima/items/f9766572cd4843747e24#%E3%82%A2%E3%83%97%E3%83%AA%E4%BD%9C%E6%88%90

#### モデルの修正

まずはmodelを修正。
変更点としては`create_auth_token`メソッドを追加。
`@receiver(post_save, sender=settings.AUTH_USER_MODEL)`をつけることで、

元記事を表示

python×gRPCでのマルチプロセス処理の罠

こんにちは!

Pythonでマルチプロセス処理を使用した際に躓いた経験があるため、その内容をこの記事で共有しようと思います。同じ問題で困っている方の助けになれば幸いです。

## 概要
* pythonとgRPCでマルチプロセスを使用したエラーの再現
* エラーの原因と解決策
* 最後に

## PythonとgRPCでマルチプロセスを使用したエラーの再現
### PythonとgRPCでHello World
まずは[公式クイックスタート](https://grpc.io/docs/languages/python/quickstart/)に従ってPythonaとgRPCを用いたhello worldを実装します。
エラー再現のため環境はpython >= 3.9、grpcio >= 1.53で作成してください。

### マルチプロセス実行を行うようにプログラムの書き換え
次にgreeter_server.py及びgreeter_client.pyを書き換えエラーを再現します。
書き換えた内容は以下です。
* クライアント・サーバ間の疎通確認を20秒おきに送る設定の追加
* サ

元記事を表示

classification_report優秀すぎる件

以前にこんな記事を書きました

https://qiita.com/murasaki1994/items/d86c49b33f42054f6cfb

ここではclassification_reportというScikit-Learnにある分類の於ける各指標をクラスごとに計算してくれるものを利用して書いたのですが、私がQiitaを始めて2回目に書いた深さ優先探索や幅優先探索のアルゴリズムを使って辞書データを自動解析する関数を使えばかなり自由度の高い分析ができるんじゃないかと思いました。

https://qiita.com/murasaki1994/items/9ab41de8aa1b1380c71b

では実際にプログラムを組んでみます。
使用するのはアヤメのデータになります。

“`Python3
from sklearn.linear_model import LogisticRegression as LR
from sklearn.metrics import classification_report
import pandas as pd

df = pd.read_csv

元記事を表示

OTHERカテゴリの最新記事