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

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

<簡単>Pythonで強化学習の環境を構築

# 導入
こんにちは、
12月30日に強化学習をしたくなったので備忘録です、
Akira_0809です、

# 必要なやつら
– Python
– Gymnasium

Gymnasiumとは前身のOpenAIGymのサポート終了後にメンテナンスを引き継いだ団体によるライブラリです。

# インストール
“`python
pip install gymnasium[box2d]
“`

今回は、box2dベースの物理演算とPyGameベースのレンダリングを使用した、物理演算に基づいたおもちゃのゲームをインストールします。

他のものは[公式ドキュメント](https://gymnasium.farama.org/)に載っているので気になるものをインストールするといいでしょう。

# コード
コードについて解説していきます。
“`python
import gymnasium as gym

env = gym.make(“CarRacing-v2″, render_mode=”human”)

observation, info = env.reset()

for _ in

元記事を表示

LambdaでExcelファイルをエクスポートすると文字化けしてしまう

## はじめに
バックエンドにLambdaを使用しているのですが、Excelファイルをそのまま返却しようとすると文字化けしてしまうエラーが発生しましたので、解消方法を記載しておきます。

## 対象者
この記事は下記のような人を対象にしています。

– PythonのopenpyxlでExcelファイルを作成している
– Lambdaを使用している

## 結論
Base64エンコードを使用します。

【サーバー側】
“`python:excel.py
import openpyxl
import base64
import tempfile
import json

def export_excel():
wb = openpyxl.Workbook()
# ここでシートにデータを書き込む

with tempfile.NamedTemporaryFile(delete=False, suffix=”.xlsx”) as tmpfile:
wb.save(tmpfile.name)
with open(tmpfile.name, “

元記事を表示

ソラカメを使ったデモアプリを作ってみた① ソラカメのEventから検知画像を取り出す

やったこと

会社の有志メンバーにて、ソラカメを使ったデモ(お魚検知アプリ)をAWSで作ってみようというプロジェクトを実施したのだが、なんとか出来上がったのでアウトプットしとく。
作ったのはソラカメで家の水槽を撮影し、指定した時間に検知された魚の数とその瞬間の画像を表示できるようにするもの。
企画部門のメンバーだけでやったので、純粋なエンジニアはゼロ。コーディングはChatGPTくんやBardさんに手伝ってもらいながら作りあげた。

作ったシステムの全容(アーキテクチャ)は以下の通り。
大まかなフローとしては、

:::note info
1. WebUIから日時を指定
2. 対象日時の画像をソラカメに取りに行く
3. 画像データをAWS Rekognitionでラベル検知
4. 指定時間内で一番多く魚を検知した画像をSNSで通知
:::

といった感じ。全てAWSのマネージドを使った完全サーバレス構成で作ってみた。
私は主に2と3のバックエンドの部分を担当したので、その周辺で気づいたことをメモ。

![スクリーンショット 2023-12-30 14.17.16.png](ht

元記事を表示

PythonだけでWebアプリを作る

![2023-12-30_16h14_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3655530/3bdb0940-6be0-b068-a80e-662b6e555c1c.png)
## PythonだけでCSVファイルをアップロードしてテーブル表示させる簡単なWebアプリを作る

Streamlitを使ってPythonで手軽にWebアプリを作る。今回はCSVファイルのアップロードとブラウザ上でのテーブル表示させる

### 1. Streamlitのインストール
“`bash
pip install streamlit
“`

### 2. Pythonスクリプトの作成
“`python
import streamlit as st
import pandas as pd

# CSVファイルのアップロード
uploaded_file = st.file_uploader(“CSVファイルをアップロードしてください”, type=[“csv”])

# アップロードされたファイルをデー

元記事を表示

【2023年版】pydantic2でFastAPIでスネークケースをキャメルケースに自動変換する

## はじめに
Pythonがスネークケースが主流であるのに対し、JavaScriptはキャメルケースが主流です。
JSONを返却する際にキャメルケースに変換する方法をまとめました。
FastAPIは、2023年現在ではまだまだ発展途上のフレームワークで、記述方法も都度変わっています。2023年時点での最新情報であることをご了承ください。

## 対象者
この記事は下記のような人を対象にしています。

– FastAPIでAPI開発をしている人
– pydantic1を使用していたが、

## 前提
– **FastAPIのバージョン: 0.103.2**
– **pydanticのバージョン: 2.4.2**

pydanticのバージョンが古い場合とは書き方が異なることに十分ご注意ください。

## 結論
データベースからUserデータを取得し、JSON形式で返却する場合を考えます。
`ConfigDict` を使用するのがポイントです。

“`python:user_schema.py
from pydantic import BaseModel, ConfigDict
fr

元記事を表示

nginx プロキシサーバ

## nginx プロキシサーバにDjangoをバインドする

Django のアプリケーションはエラー無く、python3 manage.py runserver が起動するものとする。
つまり、nginx 側の設定を紹介することにします。

### 環境

Ubuntu 22.04.02 LTS
nginx 1.18.0
Python 3.10.12
Django 5.0

“`bash:/etc/nginx/nginx.conf

#実際に記入するときには、{}を外して書いてください。
#以下のupstreamとserverの記述を追加してください。

http {
upstream {xxx.mydomain.net} {
server 127.0.0.1:8000;
}

server {
listen 80;
server_name {xxx.mydomain.net};
root /home/{ユーザー名}/{Django-App};

location / {

元記事を表示

AIによる背景判定処理の実験 前編 Python、PyTorch編

# はじめに
VRデバイスのMeta Quest3でどの程度のAI処理ができるか知るために実験したので記事にしました。
前編はPCで期待する効果が得られるかテストします。
具体的にはPythonとPyTorchを使ってAI(CNN、画像認識)により背景か前景かを判定します。
後編ではMeta Quest3で実際に動作させます。
アマレコVR※の背景透過処理※への応用を想定した実験となっています。

:::note info
※ アマレコVR
私が制作しているMeta Quest用 VR動画プレイヤー

※背景透過処理
動画内の変化のない部分を透明にし ほかの画像と合成する機能
:::

# 参考記事
この実験は私個人のAIの勉強を兼ねています。以下の記事から多くを学び参考にさせていただきました。

https://qiita.com/kenichiro-yamato/items/b64c70882473904600bf

PyTorchではなくkerasの使用例です。正解率が高かったのでCNNモデルを参考にしました。

https://qiita.com/Row

元記事を表示

AtCoder 解答集(python): A~D

## AtCoderの解答例

以下は、AtCoderの問題に対する解答例です。
この解答例では、できるだけライブラリを使用せず、基本的な解法を用いて問題に取り組んでいます(随時更新)。

・[ABC334](https://github.com/kohei-irohasu/AtCoder/blob/main/ABC334.py)
・[ABC333](https://github.com/kohei-irohasu/AtCoder/blob/main/ABC333.py)
・[ABC332](https://github.com/kohei-irohasu/AtCoder/blob/main/ABC332.py)
・[ABC331](https://github.com/kohei-irohasu/AtCoder/blob/main/ABC331.py)
・[ABC330](https://github.com/kohei-irohasu/AtCoder/blob/main/ABC330.py)
・[ABC329](https://github.com/kohei-irohasu/At

元記事を表示

Python 3.12でのCレベル再帰の上限導入の問題

Python 3.11以前では、Pythonレベルの再帰はCレベルの再帰を常に引き起こしていました。
ですので、Pythonの再帰の深さはCレベルのスタックの大きさに依存していました。
Linuxではスタックは動的に増加出来るのですが、Windowsでは出来ません。

下記の深い再帰は、WindowsではPython 3.10はスタックオーバーフローを起こします。

“`python
import sys

sys.setrecursionlimit(100_000)

def foo(n):
return 0 if n == 0 else foo(n-1) + 1

print(foo(10_000)) # Process finished with exit code -1073741571 (0xC00000FD)
“`

再帰を前提とするプログラムで、デフォルトのスタックサイズでは再帰の深さが足りない場合、スタックサイズを最大値に指定したスレッドを一つ作成して、そのスレッドで再帰を実行するなどの対応が必要でした。

Python 3.11では、[“純粋な”Pyth

元記事を表示

Google検索結果をAPIで取得する

# 概要
1\. Google検索結果の自動収集を行い、
競合他社の広告文を抽出する。

2\.パンダスで表にする

3\. 分析 手法

# 使用言語
Python

# 使用API
Custom Search API

# ファイル名
Google_searchAPI.ipynb

# 参照ページ
https://developers.google.com/custom-search/v1/overview?hl=ja

# 制作手順

## GCPでプロジェクト作成
コンソールへ移動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3557220/65e2abb8-53ff-1924-83c6-628d167d6494.png)

プロジェクトの一覧をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3557220/a703bb31-6bed-8796-6896-4e

元記事を表示

LINE Messaging API v3 – Flex Message with Python (Flask) [備忘録]

### Flex Message の手作りはめんどい

Line の Messaging API と Python でボット開発を何回かしてきましたが、Flex Message を使おうと思ったらまずは [Flex Message Simulator](https://developers.line.biz/flex-simulator/) でゴチャゴチャいじくり回した上でそのJSONをマイテンプレートとして保存し、そこに実際のデータをぶち込んでいくという方式でやっている方も多いかと思います。

ただ、ネストが深くなるとコーディングが非常に面倒になり、KeyError や IndexError が頻発します。その度にテンプレートを確認しながら「keyがxxx…`contents`の2番目の`type`…」などのようにお経を唱える日々です。

### v3 … ??

今までLINEボットを作る時のコードは基本過去の物の使い回しだったのですが、ふと公式の line-bot-sdk の [GitHub](https://github.com/line/line-bot-sdk-

元記事を表示

Pythonで「指定した値と同じ要素がタプルに含まれているか確認する」の動作を確認してみた

# 概要

Pythonで「指定した値と同じ要素がタプルに含まれているか確認する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/python/tuple/index8.html

# 実装

以下のファイルを作成しました。
“`sample.py
mytuple = (“A”, “B”, “C”, “D”, “E”)
print(“B” in mytuple)
print(“D” in mytuple)
print(“G” in mytuple)

mytuple = (“A”, “B”, “A”, “A”, “C”)
print(mytuple.count(“A”))
print(mytuple.count(“B”))
print(mytuple.count(“D”))

mytuple = (“A”, “B”, “A”, “A”, “C”)
print(mytuple.index(“A”))
print(mytuple.index(“B”))
print(mytuple.index(“C”))
#print(mytu

元記事を表示

APIを雑に作る

## 暇なのでAPIを作ってみる
– 作るもの:ローランド判定API
– 環境
– MacBook Pro
– Poetry+pyenv仮想環境

## 手順
以下の手順に従ってプロジェクトフォルダを作成
https://qiita.com/takumayagi/items/be00d0ae7932befcc6e5

`main.py`にこんなことを書く
“`python
from fastapi import FastAPI

app = FastAPI()

@app.get(“/”)
async def root():
return {“message”: “ローランド判定APIです”}

@app.post(“/”)
def sayHello(name: str):
if name == “ローランド”:
return {“result”: “俺”}
else:
return {“result”: “俺以外”}
“`

API起動
“`bash
$ uvicorn main:app –reload

元記事を表示

一度Runして誤ったOutputが出てしまうのをなんとか新しい結果に上書きしたい

一度Runして誤ったOutputが出てしまうのをなんとか新しい結果に上書きしたい
そんなときの解決方法。

# 問題
なぜかコードを書き直したのに誤った結果(グラフや出したい表など)がずっと永遠に出る。(この仕様はだれが幸せになるのだろうか?)

# 原因
KernelがRestartされないと永遠に記憶されたままRunしてしまい、せっかく苦労して書き直したコードがうまく結果として現れません。

# 対処法
Restart & Run Allしましょう。
下記画像はJupyterだけど、Google Colaboratoryにも似たようなものがあるはず。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3334349/b5ceff36-1651-9a37-20f5-999e27b52118.png)

元記事を表示

ACL Practice Contestをac-library-pythonで解いてみたよ。(G~L問題)

# はじめに
2023年8月にあった大幅なAtCoderの言語アップデートで、PythonにもACLとよばれる競プロライブラリが追加されました。

https://github.com/not522/ac-library-python/

この記事では、そのライブラリの使い方を [ACL Practice Contest](https://atcoder.jp/contests/practice2) の問題を通して見ていきます。

この記事ではG問題以降を見ていきます。A~F問題については下の記事を見てください。

https://qiita.com/hyouchun/items/4958618268407a5442cc

:::note info
ac-library-pythonの具体的な使い方が分かります。
:::
:::note warn
内部の詳細な実装は、上のGitHubを参考にしてください。
核となる問題の解き方は、ユーザー解説などを参考にしてください。
:::

# G – SCC

## 問題

https://atcoder.jp/contests/practice

元記事を表示

Python株価分析でNo timezone foundとなってしまうエラー対処法

# エラー内容

「 xxxx 」の部分は企業のティッカー(証券コード)が入ります
~~~

1 Failed download:
[‘xxxxx’]: Exception(‘%ticker%: No timezone found, symbol may be delisted’)
~~~

## 問題のコード

書いたコードは下記の通り
~~~
#ダウンロードに必要なモジュールをインストール

from yahoo_fin import stock_info
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime

import pickle

import matplotlib.pyplot as plt

start_date = ‘2015-01-01’
end_date = ‘2023-12-28’

# Define the tickers
tickers = [“xxxxx”, “xxxxx”,”xxxx

元記事を表示

ACL Practice Contestをac-library-pythonで解いてみたよ。(A~F問題)

# はじめに
2023年8月にあった大幅なAtCoderの言語アップデートで、PythonにもACLとよばれる競プロライブラリが追加されました。

https://github.com/not522/ac-library-python/

この記事では、そのライブラリの使い方を [ACL Practice Contest](https://atcoder.jp/contests/practice2) の問題を通して見ていきます。

この記事ではF問題までを見ていきます。G問題以降については下の記事を見てください。

https://qiita.com/hyouchun/items/3eee499a7ef31ca55b46

:::note info
ac-library-pythonの具体的な使い方が分かります。
:::
:::note warn
内部の詳細な実装は、上のGitHubを参考にしてください。
核となる問題の解き方は、ユーザー解説などを参考にしてください。
:::

# ac-library-pythonのインストール方法
1分で終わります。
タスクバーなどにあるパソコン内

元記事を表示

指定されたディレクトリ以下のすべてのファイルのパスを再帰的に取得(Python)

“`python
def get_file_list_recursive(directory_path):
“””
指定されたディレクトリ以下のすべてのファイルのパスを再帰的に取得する

Parameters:
– directory_path (str): ファイルリストを取得するディレクトリのパス

Returns:
– list: ディレクトリ以下のすべてのファイルのパスを含むリスト
“””
file_list = []
for root, dirs, files in os.walk(directory_path):
for file in files:
file_list.append(os.path.join(root, file))

return file_list
“`

元記事を表示

OpenAIの自動音声認識システムWhisperをつかってみる

# 1. はじめに

こんにちは!音声認識技術は、現代のコンピューティングにおいて不可欠な要素となっています。特に、OpenAIによって開発されたWhisperは、その分野において大きな進歩を遂げています。このブログでは、Whisperの基本的な概要と、それを使用した音声入力のサンプルコードを解説していきたいと思います!

# 2. Whisperとは?

WhisperはOpenAIによって開発された先進的な自動音声認識(ASR)システムです。ウェブから収集された680,000時間以上に及ぶ多言語・多目的データでトレーニングされています。結果、アクセントや背景ノイズ、専門用語に対しても高い認識精度を示し、多言語に対応するとともに、これらの言語から英語への翻訳が可能となっており、グローバルなコミュニケーションにおいて強力なツールとなっています。詳細はOpenAIの公式ページにも書かれています。

https://openai.com/research/whisper

![DALL·E 2023-12-29 21.41.29 – Illustration visualizing Ope

元記事を表示

【Python】四分木の中で最も複雑な領域を分割し続けるアートを実装してみた

# はじめに
数ヶ月前に、[このツイート](https://x.com/BaroqueEngine/status/1549009803925950464?s=20)が目に留まりました。

https://x.com/BaroqueEngine/status/1549009803925950464?s=20

非常に魅力的で、自分でも作りたいと思ったのですが、アルゴリズムや実装が公開されているにもかかわらず、実際にやっている人が少ないようでした。

そこで、本記事では、Pythonの画像処理ライブラリPillow(PIL)を使用して、四分木の中で最も複雑な領域を分割し続けるアートの実装方法について解説します。

# アルゴリズム

以下の操作を再帰的に繰り返します。
– キャンバス上のすべての矩形領域の中から、最も複雑な領域を選んで四分割する。
– 新しくできた矩形領域において画像の複雑度(score)と平均色を求め、領域を平均色で塗りつぶす。

詳しくは元記事を参照してください。

https://zenn.dev/baroqueengine/articles/ccf3ac7a2c93

元記事を表示

OTHERカテゴリの最新記事