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

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

WAV解析・・・3)FFT、IFFT

第4回目の解説では、第2回で作成した音声データを
実際にスピーカーから出力して
それを内臓のマイクで録音して比較を行います。

その前に、FFT(フーリエ変換),IFFT(逆フーリエ変換)について説明します。

##2成分Sin波形の作成

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

#n_channels = 1
a1, a2 = 0.4, 0.6 #amplitude
f1, f2 = 10.0, 100.0 #frequency

framerate = 44100
sampwidth = 2 #16bit
total_secs = 2

data_num = int(total_secs * framerate)
t = np.linspace(0, total_secs, data_num)
wav = 32767 * a1 * (np.sin(np.pi*f1*t)) + 32767 * a2 * (np.sin(np.pi*f2*t))

plt.plot(t,wav)
plt.show()

元記事を表示

Lambda+Pythonでマルチプロセス化による高速化検証(キューイング処理を自前で作る)

Lambdaの処理を高速化しようと思ったのでマルチプロセス化を試した結果を残しておきます。
pythonのmultiprocessingを使う場合、[LambdaではPool/Queueが使えないという問題](https://aws.amazon.com/jp/blogs/compute/parallel-processing-in-python-with-aws-lambda/#:~:text=Python-,Parallel%20Execution,-The%20multiprocessing%20module)を回避しているので、困っている方の参考になればと思います。

# 前提

高速化対象の処理はブロッキングが発生する処理
⇒asyncio等でマルチスレッディングしても効果がない処理
⇒検証ではシンプルに1000万回ループして変数にインデックスをセットするだけという処理を10回実行

# 比較結果一覧

Lambdaはメモリに応じてvCPUの数が増減し、メモリ10GBで6つまで拡張可能となっているため、各メモリに応じた実行時間を比較してみたいと思います。

https://a

元記事を表示

PrefixSpanでバズったツイートの頻出表現を見つける

## 1. 本記事について
頻出パターンを抽出するアルゴリズムであるPrefixSpanを使って
バズったツイートによく使われている表現を探してみました。

PrefixSpanとは以下のような複数の系列データに対して
頻出パターンの抽出を深さ優先探索で行うアルゴリズムです。
パターンの数え上げは連続していないものでも対象となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217525/b0afe69d-723d-fd62-0238-80676d0a9d28.png)
このPrefixSpanを{ うさぎ, は, かわいい }のような形態素解析した
ツイート群に対して実行することで、バズったツイートによく使われている表現の
パターンの抽出が可能です。
また、登場した単語の集計であるwordcloudなどと比べると、パターンとして抽出することで
ある程度は元の文章を類推できる形で抽出できると思われます。

## 2. 使用データについて
Twitter APIで収集した以下のツイー

元記事を表示

polars ダウンサンプリング

# pandas

“`python
df.asfreq(“5min”)
“`

# polars

“`python
df.groupby_dynamic(“Time”, every=”5m”).agg([pl.col(“hoge”).first()])
“`

元記事を表示

polars dfの重複するindexの削除

# pandas

“`python
df = df[~df.index.duplicated()]
“`

# polars

polarsのdfにはインデックスが無いので、指定したカラムを対象に重複する行の削除を行う

“`python
df = pl.DataFrame(
{
“hoge”: [1, 2, 2],
“bar”: [6, 7, 8],
“ham”: [“a”, “b”, “c”],
}
)
df = df.drop_duplicates(subset=”hoge”)
“`

元記事を表示

vgamepad でゲームパッドをエミュレートする

# 概要
python vgamepad でゲームパッドをエミュレートする。

自作したゲームパッドからUART等でパソコンにデータを送信しても、他のアプリはゲームパッドの入力として認識しない。
そのためpythonでCOMポートからデータを受信し、vgamepad でゲームパッドの入力と認識させる。

# vgamepad のインストール
途中でドライバのインストールを求められるのでインストールする。

“`
pip install vgamepad
“`

## vgamepad の使い方
vgamepad の使用方法は下記に記載されている。
https://pypi.org/project/vgamepad/

コードとメモ

“`python
import vgamepad as vg

# 初期化 (内部でresetとupdateが行われる)
gamepad = vg.VDS4Gamepad() # DualShock4 gamepad.

# ボタンを押す (button1=0x0010, button

元記事を表示

【Python Flask】初心者プログラマーのWebアプリ#2 HTMLテンプレート表示

第一回目は簡単な文字を表示をしただけでした。
今回はHTMLテンプレートを使って柔軟に規模を大きく綺麗に作っていきましょう。

![flask.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260345/cc80bb97-0728-0bf0-51f2-540cb0f46641.jpeg)

:::note
Flaskとで使われているテンプレートエンジンはDjangoも同じなので記法も当然同じ。
:::

# :pushpin: Pythonで作るFlaskアプリ記事一覧

| | 内容|
|:—-:|:—-:|
|**part1**|[簡単なページ作成](https://qiita.com/Bashi50/items/30065e8f54f7e8038323)|
|**part2**|**HTMLテンプレート表示 ← ココ**|
|**part3**|”画像” “CSS” “Javascript”実装 予定|
|**part4**|フォーム送信 予定|
|**part5**|データベースの値

元記事を表示

Google Assitant SDKで自分のPCをGoogleアシスタントにしよう

# はじめに
この記事は、[Aizu Advent Calander2021](https://adventar.org/calendars/6636)の19日目の記事です。
大遅刻です。
# 本編ここから
こんにちは。PythonParrotです。
ラズパイをGoogleアシスタントにしようとして、まずは自分のPCでやってみたのでその話です。
あと「OK, Google」で起動できるようにしたのでその話も。

## やったこと
以下のサイトの通りにやった。

https://developers.google.com/assistant/sdk/guides/service/python/embed/setup

今回はPCだったのでイヤホンとマイクがあればOKだった
## 躓いたところ
### OAuth2.0認証するところ
https://developers.google.com/assistant/sdk/guides/service/python/embed/install-sample
ここのセクションでOAuth認証が必要なのだが、なぜか403で拒否されてしまう(自分

元記事を表示

embeddable python + vscodeによるpython環境構築

# 1.概要
pythonにはembeddable packageなるものがあり、超軽量なpythonのパッケージらしい。
必要なライブラリだけinstallしておけば、配布された人的には自分のpython環境がよごされないし、pythonを何もしらなくても適当に動かしたいという人にも優しいような気がする。
embeddable pythonで開発をするにあたり、エディタにvscodeを使いたいので拡張機能なども導入していきたい。
作業用にいろいろとインストールしたいがまずは、開発に必要な最低限のインストールと設定をやっていきたい。
今回の実施環境としてはwindows10 home(64bit)。

# 2.インストール一覧
インストールするもの一覧。python packageとvscode extenstionの一部が省略可能。後からでも入れることができるので。

– embeddable python(3.9)
– python package
– pip
– vscode
– vscode extension
– Python

# 3.インストール作業
e

元記事を表示

Python: Windowsレジストリの検索

# Python: Windowsレジストリの検索

## はじめに

Windowsのシステムログを見ているとCLSID等をレジストリから調べなければならない事があります。
レジストリエディタから検索するのは不便なので何か便利な方法が知りたいです。
Windowsだけで完結できるPowerShellで検索出来ればよかったのですが、あまりPowerShellは得意ではないのでPythonで調べてみました。
調べた結果、簡単そうなのでPythonで実装してみました。

## 環境

“`:OS
エディション Windows 11 Pro
バージョン 21H2
OS ビルド 22000.318
エクスペリエンス Windows 機能エクスペリエンス パック 1000.22000.318.0
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
“`

“`:python
Python 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929 64 bit (AMD

元記事を表示

[ABC233 G]Strongest TakahashiをPythonでTLEしないためのテクニック

#はじめに
この記事はABC233 G. Strongest TakahashiをPythonでTLEせずに解くテクニックについて書いていきます.
Pythonの実行時間を短縮するための小技のようなものを挙げていくので緑~水色の人も読んで損はないと思います.
使用言語はPyPy3です.

この問題についてですがDifficultyが2438と高めなのも厄介ですが, とにかくPythonでは制限時間がきついです.
問題の内容と解法については[問題ページ](https://atcoder.jp/contests/abc233/tasks/abc233_g)から確認できます.

##1. 公式解法の通りに実装
まず公式解法の通りに再帰関数を使ってDFSを実装してみました.
計算量はO(N^6)です

“`py
N = int(input())
S = [input() for _ in range(N)]

dp = [[[[None]*N for _ in range(N)] for _ in range(N)] for _ in range(N)]
def dfs(Rlo,Rhi,Cl

元記事を表示

テスト技法ツールGIHOZのデシジョンテーブルをテストケースに変換するツール

# はじめに
[テスト技法ツールGIHOZ] (https://www.veriserve.co.jp/gihoz)で作成したデシジョンテーブルをテストケースに変換するツールを作ってみました。この記事ではそのツールを紹介します。
デシジョンテーブルは、条件の組み合わせとその結果を整理できる表です。デシジョンテーブルを作って、テストケースを作るテスト技法のことを、デシジョンテーブルテストと呼びます。

デシジョンテーブルテストの詳細は以下のページに解説がありますので、そちらをご覧ください。

https://www.veriserve.co.jp/gihoz/decision-table.html

# ツールの概要
デシジョンテーブルをテストケースに変換するツールです。テストケースには色々なフォーマットがあると思いますが、この記事ではとりあえず、デシジョンテーブルで指定した条件の組み合わせと動作結果が横1行に並んだものを指すことにします。

具体的には、以下のようなデシジョンテーブルがあったとします。
![image.png](https://qiita-image-store.s3.

元記事を表示

【freee 人事労務 + Slack】休日のメンションはボットに対応させる

仕事で Slack を使用していると、休日や稼働終了後もついつい Slack を見てしまいゆっくり休めない方が多いのではないでしょうか。

通知をオフにしたりアプリを削除するのもありですが、結局休日明けに自分で対応しないといけません。

私は働きたくありません。

そこで今回作成したボット「[yattoite](https://github.com/Doarakko/yattoite)」の出番です。

![スクリーンショット 2021-12-28 21.33.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245792/6e4bcd82-0ae9-7a56-9f43-62d77f2a97a8.png)

## 前提

– 勤怠管理を freee 労務で行っていて、稼働開始・終了するタイミングで打刻を行っている
– 社内のコミュニケーションツールに Slack を使用している

## やったこと

休日(or 稼働していない時間帯)に自分に Slack のメンションが飛んだときに、ボットに代わりに返答

元記事を表示

contextmanagerを使ったSFTPのconnection管理 (Paramiko)

# はじめに

[Zenn](https://zenn.dev/nslender/articles/586fc6979cbfdc)とダブルポストです。

[contextmanagerの実践例](https://qiita.com/n_slender/items/c08a0611449cfd4e802c) の続きです。今回はSFTPが題材です。SSH/SFTPのクライアントライブラリとしてよく使われるParamikoを使います。

# Paramikoでの実践例

パスフレーズ付きの秘密鍵を使った、公開鍵認証での例です。

“`python

from paramiko import Transport
from paramiko import RSAKey
from paramiko import SFTPClient

class SFTPService:

def __init__(self, host, port, user, private_key, pass_phrase):
self.host = host
self.port = po

元記事を表示

4桁の7セグをラズパイで動かす

時計やセンサーの値をリアルタイムで表示させる勉強として、4桁の7セグを扱ってみました。
Pythonでダイナミック点灯させます。こんな感じ↓↓↓
IMG_0364.jpeg

1桁の7セグの記事は[こちら](https://qiita.com/umet787X/items/cc2596145f8d02cffd70)

#動作環境
Raspberry Pi 4 Model B
Python3.7.3

#準備するもの
– 4桁7セグメント (今回は、白色の [A-574SR-LF B/W](https://akizukidenshi.com/catalog/g/gI-15752/) を使用)
– 抵抗 (白色の場合は、330Ω)
– ブレッドボード
– ジャンパ線

#配線

A-574SR-LF B/W での7セ

元記事を表示

【Project Euler】Problem 65: ネイピア数eに収束する分数

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題: ネイピア数eに収束する分数

原文 [Problem 65:Convergents of e](https://projecteuler.net/problem=65)

**問題の要約: ネイピア数eの連分数展開の100番目の項まで収束した分数の分子の各桁の和を求めよ**

連分数に関しては[連分数(Wikipedia)](https://ja.wikipedia.org/wiki/%E9%80%A3%E5%88%86%E6%95%B0)に説明があるので参考にしてください。

まずネイピア数eの連分数展開ですが、とても不思議なことに規則性を持っているようです。その辺を確認するためにpython sympyのcontinued_fraction_iteratorを使ってみます。すると問題の中でも提示されてい

元記事を表示

化石がマイナスからKaggleを始める~レベル最弱の「タイタニック号を救え!」2 ~

#前提
数学力・統計力・技術力がほぼすべて「ゼロより低い、マイナス」の化石エンジニア・アンモナイトが生き残りを目指して~~賞金が欲しくて~~、Kaggleに挑戦する。
たぶん、Kaggleに挑戦する記事の中で、もっともレベルが低いと思う。
現状は、タイタニック号を救うべく、「先生」(個人的な教本)のNotebookを「Submit」して、0.7ちょいのスコアをもらい、
スコア1.0の方が複数存在することに驚愕、「へえぇ、スゴ!」と思ったところです。

#1:で、どうやってタイタニック号を救うの?
「Submit」したのは模範解答(「先生」のNotebookをデバッグしたもの)なので、
なにがどう評価されて、0.7ちょいのスコアになったのか、わからない。
そもそも、機械学習でどうやってタイタニック号を救うのか、脈絡がわからない。

アンモナイトがタイタニック号の救出方法を考えるに、
 1:氷山を削る←直感的に考えた
 2:船員がすごく頑張る←現実的に考えた
 3:タイタニック号的なデカい客船を急遽派遣する←方向性を変えてみた
 4:事前に予約した人の予約を全キャンセルする←方向性を(以下

元記事を表示

大井競馬は本当に荒れるのか南関東競馬5年分のデータでバトルさせてデータ分析してみた

# 結論、大井は荒れます。単純に配当が高い。
– レース数(平均を取った母数)

| 開催場所 | レース数 |
| —- | —- |
|大井|5990|
|川崎|3474|
|船橋|3863|
|浦和|3291|

– 開催場別平均払戻のグラフ
– [高知ファイナルの記事](https://qiita.com/dialoguedaisuki/items/37e7636d2158b84b3cec)を思い出す圧倒的な払い戻しの強さ 。

![nankan4PlaceVspng.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354194/b724dcfa-6b95-d552-3843-561cc5e6b5e1.png)

## 結論、内枠有利
– フルゲートがないにせよ、普通に右肩下がり。やはり、あからさま。

![ooiWakubanStats.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3541

元記事を表示

TouchDesigner Experimental Builds 2021.30000 日本語まとめ記事

https://docs.derivative.ca/Release_Notes/2021.30000

### download link

https://derivative.ca/release/202138110/65595

2021.30000 シリーズの最初のビルドのリリースノート日本語翻訳・解説記事です(非公式)

:::note warn
Experimental ビルドには、まだ開発・テスト中の新機能が含まれており、機能は変更される可能性があります
パフォーマンスやプロジェクトの納品に必要な安定性と信頼性については、製品版に対応した公式ビルドを使用することをお勧めします
:::

:::note alert
警告!
Experimentalで保存したProject.toeファイルをOfficialで読み込むことができません
:::

## (Work In Progress)

`(Work In Progress)`とタグ付けされたものは、活発に作業が行われており、おそらくバグを含んでいるか、未完成とみなされるため、大きな変更が加えられる可能性があります

[

元記事を表示

!cd と %cd の違い

# `!cd` と `%cd` の違いは?

Jupyter Notebookでは`!ls` `!cd`のようなシェルコマンドや,`%time` `%run`などの[マジックコマンド](https://ipython.readthedocs.io/en/stable/interactive/magics.html)が利用できます.

Notebook上でディレクトリを移動する場合,シェルコマンド`!cd`を使いたくなりますが,なぜかマジックコマンドにも`%cd`が存在しています.この違いは何でしょうか?

結論から言うと,

– `%cd`を使うとPythonの作業ディレクトリを変更できる.
– `!cd`を使うと新しいシェル内で`cd`を実行し,そのシェルは終了する.

つまりPythonの作業ディレクトリを変えたいときは`!cd`ではなく`%cd`を使います.

# 実際に試してみる

簡単に動作を確認してみます.個人的に[Google Colab](https://research.google.com/colaboratory/)をよく使うので以下はGoogle Colab上で

元記事を表示

OTHERカテゴリの最新記事