Python関連のことを調べてみた2022年04月13日

Python関連のことを調べてみた2022年04月13日
目次

Raspberry Pi OS Lite 32bit Bullseye で opencv-python 環境

# 1.はじめに
古い8mmカメラをデジタル化するプロジェクトの過程で、Raspberry Pi zero2 Wでopencv-pythonを使いたかったので導入方法の覚書。

Bullseyeの64bit版だとopencv-pythonが簡単に動きますが、Liteの32だといつものごとくライブラリが足りないと言われます。
Zeroは64bitに対応していませんし、Zero2は64bit対応ではあるものの一部カメラが使えなかったので32bit版の方が使いやすい印象です。

あと、Zero系だとヘッドレスセットアップからssh接続の流れが多いと思いますが、デフォルトユーザーのPiが無くなった関係でこれまでのやり方だとログインできませんのでご注意を。
Raspberry Pi OS Imager のカスタマイズ機能を使うとアカウントを先に作れるみたいです。

# 2.インストール方法

buster時代とほぼ同じ流れでいけます。
足りないと言われたライブラリもだいたい見覚えのあるやつばかりかな。

“`sh
sudo apt-get update
sudo apt-get upgrade

元記事を表示

Parquetとは

# 1. CSVとParquetの比較
||CSV|Parquet|
|:—|:—|:—|
|指向|行|列|
|利点||非関連列をスキップできるため、クエリの読込や集計を効率化できる|

# 2. 実装
“`python
# 入出力ファイル指定
in_file = “xxx.parquet”
out_file = “yyy.parquet”

# 実行
df = pd.read_parquet(in_file)
df.to_parquet(out_file)
“`

元記事を表示

典型90問006 Smallest SubsequenceをPythonで解く!

# はじめに
AtCoder現在茶色(年内には緑が目標!)のあんこちゃん(@Chunky_RBP_chan)です。
典型問題は抑えとかねばということで、★2〜★5に取り組んでいます。
Pythonで取り組まれている方も多いと思うので自分の解答をシェアしたいと思います!

# 問題
https://atcoder.jp/contests/typical90/tasks/typical90_f

# 解法
入力
N K
S
に対して、まずN-K文字目までをheappushし、その後N文字目まで次の操作を繰り返すことで答えが得られます。

**操作**
①N-(K-1)<=i<=Nを満たすiに対して、各iごとにSのi文字目をheappushする。 ②以前でた文字より右にあるものが取り出されるまでheappopし続ける。 ③取り出された文字を以前出た文字の右に付け加える。 ## なぜうまくいくか $N=5、K=3、S=a_1a_2a_3a_4a_5$のとき 答えの文字列が$b_1b_2b_3$とすると $b_1$は必ず$a_1、a_2、a_3$の中にあります。なぜなら$b_1=a_4$であ

元記事を表示

Pythonで指定した期間内の営業日を算出するライブラリを作った

# はじめに

週休と国民の休日を考慮して営業日を計算するPythonライブラリは既に[あります](https://pypi.org/project/jpbizday/)。

しかし、**2022年4月13日から4月20日までの営業日の取得**とか、**2022年4月13日以前の5営業日の取得**といったことができるものは(見た限り)無く、業務上必要になったので作成しました。

https://github.com/discus0434/jp-workdays

[JPHoliday](https://github.com/Lalcs/jpholiday)からのフォークです。

## インストール

### 自環境にインストールする場合

Python >= 3.7が必要です。

“`zsh
pip install jpworkdays
“`

### Google Colab上にインストールする場合

colab上でインストールする場合はpipの前に”!”をつけてください。

“`zsh
!pip install jpworkdays
“`

# サンプルコード

JPHo

元記事を表示

飛角の入替え:将棋フォーカスのパズルの最適解を見つける

## 問題:飛車と角の入替え

2022年4月10日の将棋フォーカスの1コーナーで、将棋パズルが出題されました。

> 将棋の初期配置から、ルール通りに先手のみ駒を動かして飛車と角の位置を入れ替えてください

初期配置から この配置へ

番組では、制限時間5分で司会のサバンナ高橋さんが挑戦していました。

この問題の最短手順を探しました。

## 問題のサイズを見積もる

探す前に、最適

元記事を表示

CSVファイルと同じ名前のディレクトリを作成しCSVファイルを格納

“`python
import shutil
import os

for f in os.listdir(path=’.’):
if os.path.splitext(f)[1]==’.csv’:
dir_name=os.path.splitext(f)[0]
os.mkdir(dir_name)
shutil.move(f, dir_name)
“`

元記事を表示

昨日の日付をURIに含むS3のディレクトリ内のファイルを一括でダウンロード

“`python
import datetime
import os

yesterday=datetime.date.today()-datetime.timedelta(days=1)
date=yesterday.strftime(‘%Y%m%d’)

os.system(f’export AWS_PROFILE=stg’)
os.system(f’aws s3 sync s3://bucketname/{date}/ .’)
“`

元記事を表示

昨日の日付をディレクトリ名にしてファイルをセット

“`python

import datetime
import os
import shutil

yesterday=datetime.date.today()-datetime.timedelta(days=1)
date=yesterday.strftime(‘%Y%m%d’)

os.mkdir(date)
shutil.copy(‘template.py’, date)

“`

元記事を表示

Python+Windows10でMeCabをインストール (2022/4/13)

 形態素解析器として日本語を扱う上で有名なMeCabですが、Windows環境でPythonから使えるようにするのは結構大変でした。Web上に色々な情報が散乱していますが、なかなか上手く行かなかったため、備忘録として残しておきます。
(本記事は2022/4/13時点での最新版である`mecab-python3 1.0.5`に合わせたものとなっています。バージョンが異なる場合、他の方法が必要となる可能性がありますが、予めご了承ください)

 基本的には [MecabをインストールしてPythonから使ってみた](https://own-search-and-study.xyz/2017/06/28/mecab%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97python%E3%81%8B%E3%82%89%E4%BD%BF%E3%81%86%E6%96%B9%E6%B3%95%E3%81%BE%E3%81%A8%E3%82%81/#Windows10) の記事を参考に進めます。

# 1. Me

元記事を表示

Azure DatabricksのML Quickstartやーる

# はじめに
DatabricksのML Quickstartやっていきます

https://docs.microsoft.com/ja-jp/azure/databricks/_static/notebooks/mlflow/ml-quickstart-training.html

# 導入
1.Azure Databricksで新しいノートブックを作成する

2.ライブラリのインストール
~~~python
%pip install mlflow
%pip install numpy
%pip install pandas
%pip install scikit-learn
%pip install hyperopt
~~~

3.ライブラリのインポート
~~~python
import mlflow
import numpy as np
import pandas as pd
import sklearn.datasets
import sklearn.metrics
import sklearn.model_selection
import sklearn.ensemble

元記事を表示

15byteより小さいファイルをゴミとして特定のディレクトリへ移動する。

“`python
import shutil
import os

os.mkdir(‘trash’)

def isTrash(file):
return os.path.getsize(file) < 15 for f in os.listdir(path='.'): if isTrash(f): shutil.move(f, 'trash') elif os.path.isfile(f): print('file operation:' + f) ```

元記事を表示

Pythonで標準化、分散、偏差値を求めるなど

“`Python
#!/usr/bin/env python
# coding: utf-8

# In[3]:

import pandas as pd
df = pd.read_csv(“../../data/hensachi.csv”)

# In[4]:

df.head()

# In[6]:

Amean = df[‘pointA’].mean()
Bmean = df[‘pointB’].mean()
print(Amean)
print(Bmean)

# In[7]:

def bunsan(array):
“”” データの配列から分散を求める “””
S = 0
for i in array:
S += (i – array.mean()) ** 2
return S

bunsanA = bunsan(df[‘pointA’])
bunsanB = bunsan(df[‘pointB’])

hyoujyunhensaA = bunsanA ** 1/2
hyoujyunhensaB = b

元記事を表示

感情推定についてメモ

感情推定技術についてのメモ。知り合いにヒアリングする前にちょっと検索してみた程度の情報。

## User Localの感情推定使ってみた
UserLocalに顔のイメージを送ると、resultが返ってくる。
個人で遊ぶ分にはよさそう。推定アルゴやモデルを自分で作った後、ベンチマークとして比較する対象にはなるかも。

“`python
#!/usr/bin/env python
# coding: utf-8

# 依存ライブラリのインストールが必要です
# $ pip install requests

import requests
import json

image_path = ‘/path/to/image’
image = open(image_path, ‘rb’).read()
url = “https://ai-api.userlocal.jp/face”
res = requests.post(url, files={“image_data”: image})
data = json.loads(res.content)
result = data[‘resu

元記事を表示

Tensorflowで作る簡単な混合ガウス過程

理解を深めるために勉強した結果を備忘録として残しておきます。

# 問題設定

今回実験するために問題モデルは2つ用意しました。
1つは確率モデルを扱うためのシンプルなガウス分布、2つ目は異なる2つの確率分布が混じった分布になります。

これらのモデルを機械学習(Tensorflow)で学習していきます。

* import

“` python
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
“`

## 問題1、ガウス分布による乱数モデル

問題1は、xの値で線形に平均と分散(ばらつき)が上がっていくガウス分布の乱数モデルです。
(分散といっていますが引数の scale は標準偏差の指定になります)

“` python
def target_model1(x):
return np.random.normal(loc=x, scale=x)
“`

描画すると以下です。

“` python
x_true1 = []
y_true1 = []
for x in

元記事を表示

レコメンデーション初学者がCollaborative Filtering for Implicit Feedback Datasetsをスクラッチ実装してみた

# 概要

最近レコメンデーションに少しハマりつつあるレコメンデーション初学者の大学院生が、Collaborative Filtering for Implicit Feedback Datasetsを読み理論を理解し、Pythonのnumpyでスクラッチ実装してみました、という記事になります。

僕と同じように、「ALSによるMatrix Factorizationってこういう事なのね!あれ、でもこれはExplicitデータに対する数式だよね?じゃあImplicitデータに対してはどうやるんだ-?あれ?パッと調べても出てこない…」という状況に落ちいった方の助けになれば嬉しいです。

拙い記事かもしれませんが…シューマイ!!

# はじめに

前回、レコメンドエンジンにおける一手法の「協調フィルタリング」、の一手法である行列分解(Matrix Factorization)について自分なりにまとめました。また、行列分解のアルゴリズムの1つであるALS(Alternate Least Squares)についても理論をまとめ、Pythonのnumpyを使ってスクラッチ実装してみまし

元記事を表示

仮想シリアルポートの作成および動作確認方法

仮想シリアルポートを作成して動作確認する方法

# はじめに

環境

“`:bash
cat /etc/system-release
Amazon Linux release 2 (Karoo)
“`

プログラムはpython

“`:bash
bash-4.2# python3 –version
Python 3.7.10
“`

port:9600を使用して通信します

# 仮想シリアルポート作成

socatという便利コマンド

## socatとは

https://linux.die.net/man/1/socat

> 2つの双方向バイトストリームを確立し、それらの間でデータを転送するコマンドラインベースのユーティリティです。

### socat install
“`
yum install -y socat
“`

### コマンド

“`
socat -d -d pty,raw,echo=0 pty,raw,echo=0
“`

#### 構文
“`
socat [options]

“`

#####

元記事を表示

PythonのOpenCVでwebカメラが使えないときはプライバシー設定が問題かも

# はじめに
最近Windowsのデスクトップパソコンにusb接続したカメラを接続して、PythonのOpenCVで遊ぼうと思っていました。
しかしなぜかカメラを認識せず、動かないという問題がありました。
試行錯誤の結果、Windowsのプライバシーのカメラの設定がすべてオンにすることで解決しました。

# プログラム

今回使用していたプログラムは、以下のサイトのプログラムです。

https://ensekitt.hatenablog.com/entry/2017/12/19/200000

“`python
# OpenCV のインポート
import cv2

# VideoCaptureのインスタンスを作成する。
# 引数でカメラを選べれる。
cap = cv2.VideoCapture(0)

while True:
# VideoCaptureから1フレーム読み込む
ret, frame = cap.read()

# スクリーンショットを撮りたい関係で1/4サイズに縮小
frame = cv2.resize(frame, (in

元記事を表示

[初心者向け]Anacondaの仮想環境を構築してpytorchの物体検出で遊ぼう!

# はじめに
**本記事は以下の記事の続編になります**

https://qiita.com/ImR0305/items/196429db26abb361c919

**AnacondaやCUDA等のインストールがまだの方は是非ご覧ください.**

今回は様々な深層学習のコードを動かすうえで不可欠なpythonの仮想環境の構築をして実際に物体検出コードを動かしていこうと思います.

# その1 なんで仮想環境が重要なの?
深層学習を扱う上でpythonが選択される理由にpythonは**ライブラリが豊富**であることが挙げられます.
しかしライブラリが豊富なゆえに**バージョン管理やライブラリ同士の相互関係等が複雑になっている**場合が多いです.
その為,github等に落ちているコードを動かす際はそのコード用のライブラリ,バージョンをインストールしなくてなならない場合が多いです.

1つのPCで様々なコードを動かしたい場合でもいちいち別のコードを動かすたびにライブラリをインストールし直したりするのは厄介ですし,今まで動いてたけど別コード用にバージョンを変えた影響で突然動いていたコ

元記事を表示

list内包表記とmapでmethodを実行した場合の速度測定結果

表記を共有します

## 結論
わずかながらmapの方が速いようです
これぐらいの速度差だと、どちらでも良いかも知れませんが

:::note warn
すみません、回数は-1回してください、range(回数)で測定していました:sweat:
:::

今回測定した処理は下の通りです
make_outputではプロパティの文字列を出力用に編集してreturnするだけのシンプルなものです
変数名やメソッド名は変更しています

なお、皆様の実行する内容や実行回数により、同じ結果になるかは分かりませんので、ご承知おきください

“`python:dummy.py
output = “\n”.join(map(lambda value_object: value_object.make_output(), value_objects))
output = “\n”.join([value_object.make_output() for value_object in value_objects])
“`

## 測定結果

| 回数 | list内包表記 | map |
|——-

元記事を表示

ABC247 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

ABC247(AtCoder Beginner Contest 247) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

https://qiita.com/sano192/items/54accd04df62242b70f0

# A – Move Right

https://atcoder.jp/contests/abc247/tasks/abc247_a

なにやら問題文がややこしいですが、要するに与えられた文字を一つ右にずらしてくださいという問題です。
例えば「1010」なら「0101」、「1111」なら「0111」となります。

左端の文字を0文字目、左端から1つ右に進んだ場所の文字を1文字目、……とすると答えは以下のようになります。
答え:「0」+「Sの左から0文字目」+「Sの左から1文字目」+「Sの左から2文字目」

これを出力すればよいです。「Sの左から0文字目」はS[0]、「Sの左から1文字目」はS[1]、……と表します。
「0」は文字列としてくっつけるので”0″とダブルクオーテーションをつける

元記事を表示

OTHERカテゴリの最新記事