Python関連のことを調べてみた2021年06月21日

Python関連のことを調べてみた2021年06月21日

Spectral Python 導入~データ読み込み

#[Spectral Python](http://www.spectralpython.net/)
[Spectral Python(SPy)](https://github.com/spectralpython/spectral)とは純度100%のpythonのモジュールで、ハイパースペクトル(HS)データの処理ができる。HSデータの読み込み、表示、計算そして分類まで一括して行える。[MITライセンス](https://mit-license.org/)のため、自由に使うことができる。

##Introduction
このユーザーガイドでは、下記の論文のデータを参照しチュートリアルを進める。またチュートリアルでは利便性のため`from spectral import *`としているが、モジュール内ネームスペースのコンテンツをすべてインポートすることは非推奨である。データは[ここ](https://github.com/spectralpython/sample-data)から。

| File Name | Description |
|:———:|:———

元記事を表示

Python 上層のモジュールをimportするためのsys.path.append

# 備忘録:実行ファイルより上層に配置した自作モジュールをimport

いつも躓くので書いておく

## 結論
moduleがあるディレクトリのpathをPYTHONPATHへ追加する

“`
# .pyの場合
import os
import sys
sys.path.append(os.path.dirname(__file__), ‘実行ファイルからの相対path’)
“`

“`
# .ipynbの場合
import os
import sys
sys.path.append(os.path.join(Path().resolve(), ‘実行ファイルからの相対path’)
“`

ipynbではfile変数を参照できないのでPath()から参照する
通常pythonは環境変数PYTHONPATHの上位から順に探索してるらしい

https://note.nkmk.me/python-import-module-search-path/

元記事を表示

Python_requestでファイルをダウンロード

今日は久しぶりにパイソンを復習しようと思います。 その中でパイソンを利用してファイルをダウンロードする方法を調べてみようと思います。

##方法
方法はrequestモジュールを活用することです。

“`
pip install requests
“`

requestモジュールを使用するには、まずpip install requestsを使用してrequestsモジュールをインストールする必要があります。

“`python
import requests

url = “http://google.com/favicon.ico”//….. 接続したいアドレス…
req = requests.get(url, allow_redirects = True) // getを使ってもいいし、postを使ってもいいし、別の接続方式を使ってもいいです。
open(‘google.ico’,’wb’).write(req.content)
“`

https://2.python-requests.org/en/master/user/quickstart/

ここからより多

元記事を表示

【Pyrhon演算処理】同心集合(Concentric Set)②加法的同心集合(Additive Concentric Set)とは?

前回の投稿は「**小学校の算数の授業で習った数直線**=スカラーの推移のみを抽出した同心円集合」から出発しました。
[【Pyrhon演算処理】同心集合(Concentric Set)について。①乗法的同心集合(Multiplicative Concentric Set)とは?](https://qiita.com/ochimusha01/items/9ed0fa5871b3f913306a)
![image.gif](https://cdn-ak.f.st-hatena.com/images/fotolife/o/ochimusha01/20210618/20210618112402.gif)

しかし残念ながら最初に着手した**乗法的同心集合**(Multiplicative Concentric Set)は、どれとしてこの形に到達できなかったばかりか、その本質に近づくほど同じものとは見えなくなっていったのです。

* 正方形が構築する同心円集合($2^{演算\frac{n}{2}}$の結果集合)
![image.gif](h

元記事を表示

DjangoをHerokuに上げる際にハマるポイント(データベース、静的ファイル)

 [Django](https://qiita.com/hibit/items/d9b2ed158ac3b0ff7b64)の続き。

# とりあえずデータベース

 大体のWebサービスにおいてはデータベースは必要になると思います。Djangoにおいてはデフォルトでsqliteがデータベースとして設定されており、マイグレートするだけで`db.sqlite3`というデータベースファイルが出来上がり、これに読み書きすることでサービスを実現できます。

 しかし、これをこのままHerokuにデプロイしても上手くいきません。Heroku環境にもそのまま`db.sqlite3`が移植され、データベースとしてはそれを参照することになりますが、これは**Gitに紐付かないデータなので、せっかくデータを書き込んでも定期的に初期状態に戻ってしまう**のです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288125/981954cd-ac2f-8e4e-fefc-524bba9f39fe.png)

元記事を表示

ABC206 B, C, D by Python3

ABC206
https://atcoder.jp/contests/abc206

# [B – Savings](https://atcoder.jp/contests/abc206/tasks/abc206_b)
$k$日後の貯金額は, $1 + 2 + 3 + … + k = \sum_{i=1}^k i = \frac{k(k+1)}{1}$である.

よって, $\frac{k(k+1)}{2} \geq N $となる最小のkを求めれば良い.

さらにこの$f(k) = \frac{k(k+1)}{2}$は単調増加である.

これは前回の[ABC205-D の二分探索](https://qiita.com/snhrhdt/items/378de323285f6ce46afa)と同じで, 条件を満たす最小のindexを求める問題になる.

“`python:
N = int(input())

# k日後の貯金金額
def f(k):
return (k+1) * k // 2

# 二分探索
left = 0
right = 10**9 + 1
while lef

元記事を表示

【Python】pycryptodomeでAES暗号化/復号化

#はじめに
下記の記事を参考にAES暗号化/復号化を試みたのですが2021年6月現在pycryptoはサポートされておらず、pycryptoからフォークしたライブラリであるpycryptodomeの使用が推奨されていました。後方互換性はある程度意識されているようなのですが、参考記事のソースをそのまま使いまわすことは出来なかったため、pycryptodomeで使えるようにするための変更点をまとめておきます。(結果的に2ヵ所をbyte型に変換するだけでしたが…)

https://qiita.com/tomipetit/items/3e478d1559e13d832486

#####実行環境
windows10
python-3.9.4

#####パッケージインストール

“`
$ pip install pycryptodome
“`

#ソース
###参考記事からの変更点
2ヵ所です。

#####`def encrypt(self, raw):`1行目

“`py:変更前
raw = self._pad(raw)
“`

“`py:変更後
raw = self._p

元記事を表示

深さ優先探索(DFS)をとっても簡単に説明してみる

# 深さ優先探索とは
深さ優先探索(Depth First Search、通称DFS)とは、目的のノードを見つけるか全てを探索し終わるまで探索を続けるアルゴリズムです。幅優先探索と違い、分岐があってもとりあえず深い方へ進むことが特徴です。

木構造のノードを探索する順に番号をつけてみるとこうなります。![dfs_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1233166/e12d7f7e-f05f-9e18-9b2b-19662db38779.jpeg)![dfs_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1233166/8a1e85ba-3ee2-0ab5-39de-b3d8e72a3e30.jpeg)

では、実際にコードを書いてみます。
# 使用例
### 1.単純な木構造の探索
先ほどと同じ木構造の番号を少し変えて、ノードの番号を探索する順(行きがけ順)に出力するプログラムを書いてみます。![t

元記事を表示

EasyOCRメモ

# ISSUES/365まとめ
## original repo
https://github.com/JaidedAI/EasyOCR/issues/365

## Trainするのは別repoを使用
https://github.com/clovaai/deep-text-recognition-benchmark

## trainmodel
* None-ResNet-BiLstm-CTC
https://github.com/JaidedAI/EasyOCR/issues/365#issuecomment-789957678

## quickdemo
python3 demo.py –image_folder /path/to/images/folder/ \
–saved_model ~/.EasyOCR/model/latin.pth \
–Transformation None \
–FeatureExtraction ResNet \
–SequenceModeling BiLSTM \
–Prediction CTC \
–hidden_size 5

元記事を表示

WindowsのOpenCVでCUDAを使うためにビルドするメモ

https://twitter.com/yasnis/status/1406499958413426689
この辺に関連して苦戦した記録。あとでちゃんと書く(かも)。

– RTX 3070
– Game Ready Driver 461.40
– CUDA ToolKit 11.2
– cuDNN
– OpenCV 4.5.1
– opencv_contrib
– Ninja

“`
“C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/Build/vcvars64.bat”
set “generator=Ninja”

set “openCvSource=C:/tools/opencv”
set “openCVExtraModules=C:/tools/opencv_contrib-4.5.1/modules”
set “openCvBuild=%openCvSource%/build”
set “buildType=Release”
set “pathToPythonDir=

元記事を表示

Python Challenge level 0

Pythonに慣れたいので暇をみてですが、[The python challenge](http://www.pythonchallenge.com/)を今更(10年以上前のサイト!)ながら挑戦していこうと思います。

![logo.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62130/c30d7e19-4663-3cc0-7193-e3a15a20f4b2.jpeg)

では早速、level 0
![calc.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62130/2b1468c3-945d-9acc-85d5-7614f53a59df.jpeg)

なんだかよく分からない絵です。2の38乗(2^38)を計算せよということなのでしょうか。Pythonプロンプトで入力すればすぐに答えは出てきます。

“`python:0.py
]>> 2**38
274877906944
“`

したがって、次のレベルのアド

元記事を表示

コンテナの型ヒントのつけ方まとめ

# 1. はじめに
「[2021年版Pythonの型ヒントの書き方](https://future-architect.github.io/articles/20201223/)」の「[コレクションの種類の使い分け](https://future-architect.github.io/articles/20201223/#%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E7%A8%AE%E9%A1%9E%E3%81%AE%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91)」を読んだ際「何をどう使い分ければいいんだ…」と絶句したので、簡単にまとめてみました。

# 2. 型ヒントの注意点
Python3.8までは、以下の書き方がされていました。

“`python:Python3.8以前
from typing import List, Sequence

def func(a: List[int], b: Sequence[float]) -> float:

`

元記事を表示

PySide2を使ったPyshonのツール作成

Pythonの初学者ですが、初めてツールを作成しました。
PySide2でcsvファイルを読み込んで、JSON,YAMLファイルに変換するだけのツールです。

![Json_yanlfikemaker.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/928107/60860664-af2e-1cf3-7d76-3c3cb05115c9.jpeg)

これを使った目的は学習でDockerCompose.Ymlファイルを作成するが、慣れていないので見えないバグにいつも悩まされる。
一括で変換してなるべく入力ミスをなくしたい。

PySide2を勉強していたので、その復習も兼ねて作りました。

・QfileDialogでcsvファイルを選択して、ListWidgetに内容を表示させる。
・ListWidgetの情報をJSONボタンをクリックした時に情報を取得してJSONファイルに変換して、ファイルを書き込む。
・ListWidgetの情報をYAMLボタンをクリックした時に情報を取得してYAMLファイルに変換して

元記事を表示

scipyでFittingするためのテンプレート

#概要
たまに簡単なFittingをする時があるのですが、たまになのでよくやり方を忘れます。なので忘れないためにここに書いちゃおうという流れになります。
今回はScipy.optimizeのCurve_Fitを使用します。

“`python
from scipy.optimize import curve_fit
import numpy as np
“`

#1次関数のFit
1次関数で最適化しようと思っている仮データを作ります。

“`python
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [1, 4, 3, 5, 4, 7, 6, 9, 10, 13, 10 ]
x, y = np.array(x), np.array(y)
“`

関数を定義し、Fittingするだけです。

“`python
def fit_linear(x, a, b):
return a*x + b
popt, pcov = curve_fit(fit_linear, x, y)
“`

popt[0]にaが、popt[1]にbが入ってい

元記事を表示

Clean Architecture完全に理解したので、二酸化炭素濃度システムで再現してみた

## 所感など
先日CleanArchitectureを読んで[感想をまとめました](https://qiita.com/kterui9019/items/ea649c38e91a950e300b)。
なんとなく書いてある意味は伝わったし、完全に理解したと確信したので「いっちょ趣味アプリでも作ってみますか〜w」と軽い気持ちでアプリを作ってみました。
やはり手を動かしてみると気づくことが多く、それこそ途中で「CleanArcitectureなにもわからない」状態に陥ったりもしました
何度か立ち止まって書籍を読み返したりして、一度読んだだけでは理解できていなかった部分を掘り下げることができました。しんどいですけど、やっぱり読みっぱなしじゃなくアウトプットすることは大切ですね。(自戒

## 成果物
MH-Z19C(二酸化炭素濃度センサー)を使って部屋の二酸化炭素濃度を測定するCUIアプリです。
[co2checker](https://github.com/kterui9019/co2checker)

ちなみにラズパイZeroで作ったのですが、本筋と外れるので結線や環境構築は割愛します。

元記事を表示

リアルタイムチャートをDjango ChannelsとEpoch.jsでつくってみた

# はじめに
あるとき、モーションセンサデータをリアルタイムで可視化したいなと思うことがありました。そこで、ネットでリアルタイム可視化ツールについて調べてみると、近年のIoTブームもありたくさんのツール、製品が世の中に出ていました。無料のツールだと、「[Grafana](https://grafana.com/)」などがあります。個人的には「[Node-RED](https://nodered.org/)」の[dashboard](https://flows.nodered.org/node/node-red-dashboard)も気に入っています。

では、**なぜDjangoでリアルタイムチャートを作ろうと思ったのか?**
理由は3つです。

– **Webアプリケーション**であるためWebブラウザから手軽に利用できる
– 可視化をちょっと試してみたい、ちょっとカスタマイズしたいとき、**言語がPythonだと嬉しい人が多そう**(フロントエンド部分は結局jsに頼るのですが。。)
– **自分の勉強のため**

自分の勉強がてら、誰かのお役に立てれば幸いです。

# システム構成

元記事を表示

pythonを便利に使おう第二回! 数学編

#初めに
問題を解くのに利用するとすれば、何が良いのか。紙には自由自在に文字を書き殴れるという利点があり、パソコンであれば、プログラムにあらゆる処理を肩代わりさせることが出来るという利点がある。それぞれの利点は、お互いの弱点にもなり得るのは、わかりやすい問題点でしょう。
ここで、どちらのほうが良いのか、という問に対して、一言で答えを出すというのは難しいことでしょう。ならば、試してみれば良いのです。
正答率が高いほうが、より優秀な手段と言えるでしょう。人類が先に、先に進むのであれば、優秀な手段でより優秀な手段を子供に学習させていくという必要があるでしょうし、教育の研究等にはきっとこういうことなのでしょう(何も知らないけど)。
###とかいう前置きはさておき!
数学の問題をpythonで解いてやろうというお話です。
問題を解く上でのレギュレーションとしては人に答えを聞きに行かないこと、それ以外であれば問題を解くための何をしてもOK!という気分でやってきます。

>問題としてこちらを使わせていただきました。
https://web.math-aquarium.jp/reidai-zissuu

元記事を表示

サウナイキタイの口コミ(サ活)をコーパス分類する

#1.はじめに
筆者は、Aidemy PremiumPlanデータ分析コースを受講し、本記事は最終課題の成果物をテーマとしたブログ作成となっています。今回は自分の興味があるもので作成しました。次回以降はより難易度の高いものに挑戦していきたいと思います

#2.簡単な概要
筆者はサウナが大好きであり、週に2~3日ほどサウナに行くミドルサウナーです。(浴室なしのアパートで家賃を抑えて、毎日行けないか検討しています)
良いサウナに出会うには、サウナ検索サイト「サウナイキタイ」は欠かせません。
サウナイキタイで人気の施設は日々サ活(口コミ)更新されて賑わっていて、
サ活の内容で施設の特徴がなんとなく分かります。(例えば、昭和ストロングといえば100℃を超える高温でカラッカラのドライサウナということが読み取れます。)
そこで今回は、施設毎のサ活情報で機械学習をしたモデルを作成し、新しいサ活に対してどの程度施設を分類出来るか検証してみました。

#3. 使用環境
**GoogleColaboratory**
こちらは環境構築は不要でブラウザ上で実行出来ます。
まだ仮想環境の構築が出来ていないので

元記事を表示

RaspberryPiでリアルタイム顔検出

#今回やること
RaspberryPiとWebカメラを使ってリアルタイム顔検出

#環境
Rasbian(RaspberryPi 4)
Python
Opencv

#処理
###カスケード分類器のインストール
“`ruby:
git clone https://github.com/opencv/opencv
“`

###コード
git cloneしたのと同じフォルダにコードを作成し、実行する必要があります。
(パスを変えればどこでもよい)

“`ruby:
import tkinter
import cv2
import PIL.Image, PIL.ImageTk

class App:
def __init__(self, window, window_title):
self.window = window
self.window.title(window_title)

self.vcap = cv2.VideoCapture(0)
self.width = self.vcap.get(cv2

元記事を表示

SQLAlchemyのトランザクション処理

# はじめに

SQLAlchemy を使って `insert` 処理を実行した際にトランザクションの扱い方で処理時間に結構な差がでました。(※注)
以下、サンプルコードと自身の環境での検証結果ではありますが知見を共有したく思います。

(※注)
本記事のサンプルコードでは `insert` 処理のみを扱いますが、`update` 処理でもトランザクションの扱いによって実行時間に差が出ます。

# 環境

| 環境 | バージョン | 備考 |
| ———————————————————— | ———————– | —————————- |
| macOS Catalina

元記事を表示

OTHERカテゴリの最新記事