Python関連のことを調べてみた2023年01月09日

Python関連のことを調べてみた2023年01月09日

Pythonでの音声信号処理 (4) ダミーデータの作成

今後も踏まえて、ダミーデータ作成用の処理を用意しておく。

“`
def makeWave(freq, smpl_freq, smpl_sec, r, a, b):
“””
サンプルデータ生成

Parameters
———-
freq : int
周波数(Hz)
smpl_freq : int
サンプリング周波数(Hz)
smpl_sec : int
サンプリング秒数(sec)
r : float
振幅
a : float
位相用定数(sin)
b : float
位相用定数(cos)

Returns
——-
res : numpy.ndarray
サンプルデータ
“””

res = []
for t in range(smpl_freq * smpl_sec + 1):
theta = 2.0 *

元記事を表示

Flask のチュートリアルの DB を DynamoDB へ置き換えてみた。

Flask 公式サイトのチュートリアルで使用している DB を SQLite から Amazon DynamaDB へ変更してみました。
変更するチュートリアルは Flask 2.2.xx の 2023-01-09 時点をベースにしています。

Flask 公式サイトのチュートリアルの詳細は、次の URL を参照してください。

https://flask.palletsprojects.com/en/2.2.x/tutorial/

先ず `DB.py` を修正します。

“`diff_python:DB.py
– import sqlite3

+ import boto3
+ from botocore.exceptions import ClientError
import click
from flask import current_app, g

+ schema = {
+ ‘user’: {
+ ‘TableName’: ‘user’,
+ ‘KeySchema’: [
+ {‘AttributeN

元記事を表示

【Python】set型のremoveとdiscardの違いと覚え方

 競技プログラミングをやっていて、ふと「どちらも削除するものだけど、この2つの違いってなんだ?」と思い調べてみました。結論としては、**取り除くものがそもそも存在しないときエラーを返すかどうか**です。

## removeとdiscardの共通事項
– 集合から要素を削除するメソッド。
– 複数指定はできない。
– 要素を指定しない場合、エラーが出る。

## removeとdiscardの違い
“`python
S = {one, two, three}

S.remove()
#エラー:remove() takes exactly one argument (0 given)
S.discard()
#エラー:discard() takes exactly one argument (0 given)

S.remove(‘four’)
#KeyError: ‘four’
S.discard(‘four’)
#エラーは出ない

“`
 先述の通り、要素を指定しなければどちらもエラーを出しますが、要素を指定して、それが含まれていない場合、`remove`はエラーを吐き出し、`d

元記事を表示

アノテーションデータの正確性ってどうなの?

# 1.概要
 これまで公開されているDatasetを用いて、Pytorchによる**Semantic Segmentation**の方法についていくつか紹介しました。
 
**Semantic Segmentation紹介記事**
[Pytorchによる航空画像の建物セグメンテーションの作成方法.](https://qiita.com/nigo1973/items/1d7495a963c23c97189c)
[PyTorchによるMulticlass Segmentation – 車載カメラ画像のマルチクラスセグメンテーションについて.](https://qiita.com/nigo1973/items/c62578fccc7230ba48f8)
[MMSegmentationによる多数クラス画像(Multi Class)のセマンティックセグメンテーション(Semantic Segmentation).](https://qiita.com/nigo1973/items/37c0980b00e4f1eb2c3f)
[航空写真から道路モデルを作成する方法](https://qiita.

元記事を表示

乱数を用いた正方行列の生成プログラム(Python)

# プログラムについて
乱数で生成した正方行列をCSV形式で出力するプログラムです.

# 環境
– MacBook Air(M1, 2020)
– Docker(Ubuntu 20.04.5 LTS)
– Python 3.8.10

# プログラム
クラスファイル

“`python:Matrix.py
import numpy as np
import random

class Matrix:
def __init__(self, matrix, N, coefficient, correction, NonZeroList):
self.matrix = matrix
self.N = N
self.coefficient = coefficient
self.correction = correction
self.NonZeroList = NonZeroList
# 対称行列を生成する
def SparseSymmetricMatrix(self):
fo

元記事を表示

Firefox で selenium を実行しながら JavaScript を on/off する方法

# selenium 実行中に about:config の状態を変更する
## 環境
Windows 10 Pro
Firefox 108.0.2 64bit
Python 3.9.13 (Anaconda)
selenium 4.7.2

あるいは
Python 3.7.15
selenium 3.141.0

## 概要
selenium の実行中に about:config を開いて javascript.enabled の値を変更する。

具体的には、次のようなコードを実行する。
“`Python
from selenium import webdriver
from selenium.webdriver.common.by import By

options = Options()
options.binary_location = r’C:/Program Files/Mozilla Firefox/firefox.exe’
browser = webdriver.Firefox(options=options)
browser.get(‘about:config’)

元記事を表示

データサイエンス100本ノック 11~20

# データサイエンス100本ノック(構造化データ加工編)
https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess
GitHubにColaboratoryが用意されているので、自分のドライブにコピーするだけで簡単に始められます。

※協会が出している解答の書き方と異なる箇所もありますが、出力としては同じになっています。協会の解答はGitHubから確認してください。解説本も販売されています。

# 解答
### P011
>顧客データ(df_customer)から顧客ID(customer_id)の末尾が1のものだけ全項目抽出し、10件表示せよ。
“`Python:P011
df_customer.query(‘customer_id.str.endswith(“1”)’, engine=’python’).head(10)
“`
### P012
>店舗データ(df_store)から、住所 (address) に”横浜市”が含まれるものだけ全項目表示せよ。
“`Python:P012
df_st

元記事を表示

【Python】ChatGPT APIを使ってみた

## ChatGPTとは
OpenAIが開発した自然言語生成モデル

https://beta.openai.com/overview

## ChatGPTをブラウザで使ってみる
OpenAIにログインして、下記のサイトを開くとすぐに利用できる。
英語も日本語も対応しているのすごすぎ!

https://chat.openai.com/chat

## API
APIキーの取得は非常に簡単で、OpenAIのホームページの右上の自分のアイコンをクリックして、View API keysを押す。
そのページでCreate new secret keyのボタンを押すとAPIキーが取得できる。

Pythonモジュールは以下のコマンドでインストールする。

“`
pip install openai
“`

“`Python:sample.py
import os
import openai

openai.api_key = ‘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’

start_sequence = “\nAI:”
r

元記事を表示

時系列解析

今日のテーマは「定常性、自己相関、相互相関、エルゴード性」。

定常性

定常性は時系列データを解析するための基礎になるもの。時系列データを前処理し、見出した定常性からモデルを構築する。そのモデルを元に、非定常性なモデルを構築する。

定常性は弱定常性と強定常性の2種類がある。

### 弱定常性
時間変化しても平均と分散、共分散(2次モーメントまで)が変化しない。

“`math
E(y_n) = E(y_{n+k})\\

Cov(y_n,y_m) = Cov(y_{n+k},y_{m+k})\\

Var(y_n) = Var(y_{n+k})
“`

### 強定常性
時間変化しても確率分布(n次モーメントまで)が変化しない。

強定常性と弱定常性の関係について

強定常性が成立する時、弱定常性を必ず満たすとは限らない。

### 例1
コーシー分布などの一部の分布の場合、強定常性を満たすが弱定常性は満たさない。
理由:コーシー分布の場合、平均と分散は存在しないため、弱定常性の定義は満たさない。

### 例2
正規分布の場合、弱定常性を満たすなら、強定常性も満たす。

元記事を表示

手軽で便利にローカル環境からStable Diffusion Web UIを呼び出す環境作った

はじめまして。
最近AIで画像生成にはまってます。

ネット上に自分がやりたいような環境の作り方が載ってなかったため、せっかくなので同じこと考えてる人がいたらと思い記事にします。
普段Pythonは触っておらずPython自体に詳しいわけではないのであしからず…。

## やりたいこと
1. 自分の慣れた環境(IDE)で簡単にStable Diffusion Web UIを立ち上げることが出来る
2. 初期パラメータを実行前に予め設定しておき、毎回起動するたびにお決まりの設定をし直す手間を省く
– Step数変える
– Scale変える
– Width, Height変える
– Sampler変える
– 生成した画像の保存場所変える…などなど

~~毎回変えるのくっっっっっそめんどいっす…~~

## 前提条件
– OSはWindowsであること
– IDEの使用方法については説明しません。
– VScodeなりIntelijなりお好きなものを使用してください。

## Pythonのインストール
※3.11以降はエラーが出る(2

元記事を表示

Python基礎構文まとめ

# if,elif,else
“`
if 条件1:
条件1がTrueの時の処理
elif 条件2:
条件2がTrueの時の処理
else:
条件1,2以外の時の処理
“`
* 条件分岐処理
* elifを複数使うことで分岐数を増やすことが出来る
* 条件式で使用する変数は事前に定義しておく必要がある

# for
“`
for i(任意の変数) in renge(iを繰り返す回数):
繰り返す処理
“`
* 回数分繰り返し

# while
“`
while(繰り返しを終了する条件):
繰り返す処理
“`
* 条件満たすまで繰り返し

# def
“`
def 任意の関数名(変数):
処理
return 戻り値(返す値)
“`
* 自分で設定する処理のアルゴリズム

# 特殊文字
## \n
“`
print(‘文字\n’)
“`
* 改行

## \t
“`
print(‘文字\t文字’)
“`
* 間隔、行を揃える

元記事を表示

Polarsでデータサイエンス100本ノックを解く(後編)

この記事の続きです。

https://qiita.com/_jinta/items/28442d25bba067c13bb7

本記事で使用したコードはこちら。

https://colab.research.google.com/gist/tanaka-jin/11951c73d22ce72fffd54616883e18c9/preprocess_100knock_polars_051-100.ipynb

# 準備
前編と同じなので、コードは折りたたんでおきます。なお、今回動かしていたPolarsのバージョンは**0.15.13**です。

展開

“`
!pip install polars
“`

“`python
import os
import polars as pl
import math
from sklearn import preprocessing
from sklearn import model_selection

if not os.path.exists(‘../data/’)

元記事を表示

Go to python REPLボタン

instantNerFのメニューにある”Go to python REPL”のボタンについて調べました。

![230108_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103446/d2dd2179-ba0f-1dc3-5d2f-beeff952304b.png)

#### testbed.exe
これを実行した場合、このボタンは機能しませんでした。
testbed.cuの中でこのボタンが変更するm_want_replから探っても実際に動作させている部分が見つかりませんでした。

#### run.py
ここから呼び出されていました。
run.pyを動かすときコマンドライン引数に–guiを与えて開くメニューから”Go to python REPL”のボタンを押すと、コマンドプロンプト上にreplが開きました。

![230108_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103446/2ebe4c3

元記事を表示

いい感じのStreamlitのコンポーネント集

# はじめに
Streamlitは独自のコンポーネント(UIのパーツ)を作ることができます。

https://docs.streamlit.io/library/components/create

GitHub等で公開されているコンポーネントのうち、サクッとpipでインストールして使えそうなものをまとめました。

## ネストレイアウト

https://github.com/joy13975/streamlit-nested-layout

![demo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649608/40281735-9570-5227-1e0a-48957d12a828.png)

“` bash:bash
pip install streamlit-nested-layout
“`

## テーブル

– フィルタの自動生成

pandasのDataFrameを読み込んでサイドバーに各列の実際の値をベースとしたフィルタを自動で生成してくれます。

https://gith

元記事を表示

配列の同じ要素の連続を別の要素に置き換える【Python】

# 概要
発話区間検出などをしていると、発話が細切れになりすぎることを避けるため、一定長さ以下の沈黙は無視したくなることがあります。そのような場合に使える、一定長さ以下/以上の同じ要素の連続を別の要素に置き換える関数を作りました。
# ゴール
以下のような入出力をする関数`replace_sequence`を作ることが目標です。

“`Python
def replace_sequence(arr, *, before = False, after = True, min_len = 0, max_len = 5):
“””処理を書く”””

# 2以上3以下のFalseの連続をTrueに置き換える
input_arr = [False, False, True, False, False, False, False, True]
output_arr = replace_sequence(input_arr, before = False, after = True, min_len = 2, max_len = 3)
print(output_arr)
#output: [T

元記事を表示

Streamlitで子ども向けのミニアプリを作る

## はじめに
Streamlitの勉強も兼ねて、子ども向けのアプリを作ってみました。

https://ppspps824-sz-app-app-pgy68d.streamlit.app/

## コンセプト
とにかく子どもは飽きやすいので以下のことを意識しました。
– いろんなミニアプリを作って切り替えられるようにする
– 内容も差し替えや追加を簡単にできるようにする
– イラストや効果音、アニメーションを多用する

一方で子ども向けなので、手の込んだ内容にする必要はなく、以下のような簡単な機能でとりあえずスタートさせてみます。
– 写真が撮れてアルバムのように見れる
– 音声を録音して再生できる
– お絵描きができる
– ちょっとしたクイズ

## 画像や音声ファイルの配置
– 方法1
GoogleDriveに配置して共有リンクを指定(アドレスを修正する必要あり)

https://qiita.com/rot-z/items/299ac40361690c51ce1d

– 方法2
Streamlit Cloudに直接配置して指定(今回はこちらにしました。)

以下のように配置し

元記事を表示

三目並べAIを重回帰分析で作る

# はじめに
どうも、y-tetsuです。

今回、機械学習の練習として三目並べのAIを**重回帰分析**を用いて作ってみたのでメモします。もともとリバーシ(オセロ)のAIを作りたいと思っているのですが、個人的にハードルが高くまずはより簡単そうな、三目並べで試すことにしました。

本記事の大まかな流れは以下となります。

1. 三目並べのゲーム部分を実装する
2. ランダム対戦の棋譜より盤面の得点を付ける
3. 盤面パターンの重回帰モデルを決める
4. 盤面の得点からデータセットを作成する
5. データセットを重回帰分析しモデルを作る
6. 重回帰分析モデルと対戦するプログラムを実装する

あくまで機械学習の初心者が、試行錯誤して得た結果のメモです。十分に検証された確かなものではありませんので、あらかじめご了承願います。

Pythonで便利に使える機械学習ライブラリの1つ**scikit-learn**(サイキットラーン)を用いて、なんちゃってな重回帰分析のモデルにより、サクッとAIを作り、実際に対戦するまでのお話となっています。

# できたもの
今回作った三目並べのAIとラン

元記事を表示

TV正則化を用いたRichardson-Lucy deconvolutionを実装しよう

# はじめに
Richardson-Lucy deconvolution(以下、RL法)[1, 2]は、画像等を鮮明にする手法である。一般的な撮像観測では、観測装置の回折等により光源が拡がって撮像される。この拡がり具合は、点拡がり関数(Point Spread Function, 以下、PSF)で表される。RL法は既知のPSFと撮像画像から、真の画像を推定する手法である。
RL法は、ノイズが多く入った画像ではノイズを増幅され、それを防ぐために正則化演算子を加えることがある。そのノイズの中でも、**特にポアソンノイズの増幅抑制の効果のある正則化演算子の一つに、Total Variation (TV)正則化[3]がある**。
そのTV正則化を用いたRL法だが、サンプルコードを見かけなかったので、本記事ではTV正則化を用いたRL法を実装する。そして、ポアソンノイズを加えたサンプル画像に対して、正則化項なしのRL法とTV正則化項を加えた場合の見た目の比較を行う。また、補足ではTV正則化の重みを適当に変化させた結果や定量評価を行なっているので興味のある方はそちらもご覧いただきたい。

![図1.

元記事を表示

Flaskでルーティング その2

4月から社会人エンジニアになるのに向けて最近はPythonおよびFlaskを勉強しています。
主にFlaskの勉強には以下のUdemyの教材を見ています

https://www.udemy.com/course/flaskpythonweb/

ただ、どこかに書いておかないと忘れてしまいそうなので備忘録がてら書いています。
細かく分けて書いていきます。

## 第2回目
### 今回は動的ルーティングをやります!

入力される内容等によって表示されるページが変わるような感じですねー!

今回打つコードはこれ!

“`python:app.py
@app.route(‘/post/‘)
def show_post(post_name):
return ‘ここは{}のページです’.format(post_name)
“`

ここでは<変数名>とすることで変数を扱うことができています!

次にブラウザに ‘http://127.0.0.1:5000/post/Tsubo’ と入れてみましょう!
(Tsuboの部分は好きな文字に変えてくれて大丈夫です!)

元記事を表示

【Python】PandasのDataFrameで、周波数(Hz)から時系列のindexを作る方法(pandas.date_range)

## 背景
– 加速度センサーなど、物理データの測定機器などでは測定間隔が周波数(Hz)で定義されていることが多くあります。
– センサーにもよるが、出力データに時系列の`index`がついていない場合もままあります。
– この際、データ分析時等の前処理として周波数(Hz)に対応した時系列の`index`を作成したいというニーズがあります。
> ※周波数
単位時間(一般的には1秒)当たりに繰り返される回数のこと。
ex)50Hzであれば、1秒間に50回何かが繰り返されている(力学では一般的に振動)ことを指しています。
参考:[周波数](https://ja.wikipedia.org/wiki/%E5%91%A8%E6%B3%A2%E6%95%B0)

## 目標
– 周波数(Hz)から`Pandas`の`DataFrame`の時期列`index`を作成できるようになる。

## 周波数(Hz)から等間隔の`Pandas`の`DataFrame`の時期列`index`を作成する方法
– [pandas.date_range](https://pandas.pydata.org/

元記事を表示

OTHERカテゴリの最新記事