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

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

ARC171回答メモ

# 0.はじめに
 ABCに引き続き開催のARC。せめて1問回答をノルマに挑戦し
 なんとか1問AC頂けました。
 B以降は、異次元の難しさだったので、すっぱりあきらめがつきました。

 そんな感じでもレートは上がり、963という過去最高位となりました。
 このまま900台キープを当面の目標としたいと思います。

# 1.A – No Attacking
 チェスのこま置き問題。
 まぁ実際におくのではなく、理論上置ける値を算出するタイプです。

 段階的に考えていき最終的にACに至りました。
 【考え方基本】
  N

元記事を表示

japanize_matplotlibがPython 3.12以降`ModuleNotFoundError`で動かない時の対処法

## 問題点と原因

“`
ModuleNotFoundError: No module named ‘distutils’
“`

原因: `distutils`モジュールがPython 3.12では削除されたから。

## 解決法の提案

`distutils`の代わりに`packaging`モジュールを使うようにjapanize_matplotlib本体のソースをいじります。

“`diff:japanize_matplotlib/japanize_matplotlib.py
import matplotlib
from matplotlib import font_manager
– from distutils.version import LooseVersion
+ from packaging.version import parse as parse_version

FONTS_DIR = ‘fonts’
FONT_NAME = “IPAexGothic”
FONT_TTF = ‘ipaexg.ttf’

def japanize():
font_d

元記事を表示

Latex-workshopにサポートされていないパッケージ(physics2)の補完を追加する

## Abstract

LatexをVSCodeで書いていますか?もちろん書いていますよね?
VSCodeでLatexを書く上で、Latex Workshopを使っていない人はいないでしょう。

https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop

またVSCodeを用いて論文を書く上で、physicsパッケージを使っている人は多いでしょう。しかしながら、近年では**脱physicsパッケージ**が叫ばれています。

https://qiita.com/Yarakashi_Kikohshi/items/131e2324f401c3effb84

physicsの代わりに**physics2パッケージ**を使おうという提案がなされていますが、実はLatex Workshopからはコマンドや環境の補完が提供されていません。
補完を増やすためには、専用のjson形式が必要ですが、これについて解説している日本語情報は知る限り一つしかありません。
また既存パッケージに対して、補完のためのjson

元記事を表示

ダウンロードフォルダの中身をきれいに分別したくなった時に作ったスクリプト

ダウンロードフォルダは、時間が経つと様々なファイルで溢れかえりがちです。このスクリプトは、ファイルを拡張子に基づいて適切なフォルダに自動的に分類し、ダウンロードフォルダを整理するのに役立ちます。

“`python:script.py
import os
import shutil
from pathlib import Path

def organize_folder(target_folder, exclude_files):
# ファイルタイプに応じたフォルダ名
folders = {
“Images”: [“.jpg”, “.jpeg”, “.png”, “.gif”, “.bmp”, “.tiff”, “.ico”],
“Audio”: [“.mp3”, “.wav”, “.flac”, “.aac”, “.ogg”, “.wma”],
“Video”: [“.mp4”, “.mkv”, “.flv”, “.avi”, “.mov”, “.wmv”],
“Documents”: [“.pdf”

元記事を表示

Azure OpenAI で JSON モードを試したメモ

# 背景
OpenAI の JSON モードが Azure OpenAI でも利用できるので試してみる。
JSON モードは、チャットのレスポンスを JSON 形式で受け取れるようにするものでプログラムなどで扱いやすくなる

# ドキュメント
以下公式ドキュメント
https://learn.microsoft.com/ja-jp/azure/ai-services/openai/how-to/json-mode?tabs=python
– 注意点
– サポートされているモデルは `gpt-4-1106-preview`
– 対応しているリージョンは限られる
– https://learn.microsoft.com/ja-jp/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-preview-model-availability
– API バージョンには `2023-12-01-preview` を指定

# 手順
1. openai のライブラリをインストール

元記事を表示

Python 動画の入出力ベンチマークテスト OpenCV PyAV FFStream

# はじめに
[FFStream](https://qiita.com/amaman/items/463ddedf52393d3e0678)の処理速度がどの程度かOpenCVおよびPyAVと比較します。
結果はPCの構成によりマチマチですので興味がありましたらテストできるよう Python用のスクリプトを用意しましたのでお試しください。

# テスト内容
動画を次のように処理し 全てのフレームを処理するのにかかった時間を計測します。

1. 入力:動画を読み込む(デコード)
2. 転送:ビデオメモリへ転送する
3. 画像処理:ビデオメモリ上でCUDAを使って青成分を0にする
4. 転送:メインメモリへ転送する
5. 出力:動画を出力する(エンコード)

|テストに使った動画|
|:–|
|Full HD 1920×1080 29.97fps 約5分40秒 10193フレーム
avc1:Main@L4.2
132MB 3Mbps|

# テスト環境
PC1
|項目|内容|
|:–|:–|
|OS|Microsoft Windows 11 Home 64-bit|
|

元記事を表示

【2024年01月版】pyenv と venv の使い分け 【python】

# はじめに

`pyenv` と `venv` の使い分けを質問された時の回答メモ。

# 概要

`pyenv`と`venv`は、Pythonのバージョン管理と仮想環境管理に使われるツール。
主な目的と機能は、`pyenv`と`venv`で異なる。

## `pyenv`

– **主な目的**
Pythonのバージョン管理
– **機能**
複数のPythonバージョンをインストールし、プロジェクトごとに異なるPythonバージョンを簡単に切り替えることができる
– **使用シチュエーション**
異なるプロジェクトで異なるPythonバージョンを使用する必要がある場合等

## `venv`

– **主な目的**
Pythonの仮想環境管理
– **機能**
Pythonの標準ライブラリに含まれているツールで、プロジェクトごとに独立したPython環境を作成し、プロジェクトの依存関係を他のプロジェクトと分離できる
– **使用シチュエーション**
特定のプロジェクトの依存関係を管理し、その依存関係がシステム全体や他のプロジェクトに影響を与えないようにしたい

元記事を表示

`poetry show`コマンドでパッケージを指定すると、Python環境に応じたパッケージのバージョンを出力しない

:::note
この記事に書かれているコマンドは、2024/01/16(numpyの最新バージョンが1.26.3のとき)に実行しました。
:::

# 環境
* Python 3.12.1
* poetry 1.7.1

# やりたいこと
Python3.8から3.12をサポートするツールを開発しています。
ツールはnumpyに依存しています。

以下の`pyproject.toml`を利用しています。

“`toml:pyproject.toml
[tool.poetry]
name = “install-test-312”
version = “0.1.0”
description = “”
authors = [“yuji38kwmt”]
readme = “README.md”
packages = [{include = “install_test_312”}]

[tool.poetry.dependencies]
python = “^3.8”
numpy = [
{version = “>=1.26”, python = “>=3.9”},
{version

元記事を表示

Stable DiffusionのWeb APIを用いて写真的素材をイラストに変換してみた

[Supership](https://supership.jp/)の名畑です。TVアニメ[マッシュル-MASHLE-](https://mashle.pw/)の2期の[OP](https://www.youtube.com/watch?v=210R0ozmLwg)が海外でバズっているという噂は聞いていたけれど、公開一月足らずでYouTubeの動画が2000万再生を超えていてびっくりしました。

## はじめに

画像生成モデルである[Stable Diffusion](https://ja.stability.ai/stable-diffusion)ではテキストからの画像生成(**text-to-image**)だけではなく、画像を元にした画像生成(**image-to-image**)もございます。

今回の記事では**Python**で[stability.aiのAPI](https://api.stability.ai/docs)を呼び出すことで「**写真を元にしたイラスト生成**」を行なっています。

目新しい試みではないというか、私の過去記事「[Stable Diffusi

元記事を表示

PythonでABC339を解いてみたよ。(A~E問題)

[AtCoder Beginners Contest 339 (ABC339)](https://atcoder.jp/contests/abc339) をPythonで解きました。
見やすいコードを書く練習も兼ねてます。

TwitterとPayPayリンクをまとめたリトリンを下に貼ってあります。
Twitterのフォローお待ちしてます!(DMでなにか一言いただけるとたすかります…!)
この記事が役に立ったなと思ったら、PayPayのご支援もよろしくお願いします┏○ペコッ

https://lit.link/mer6177999

# A – TLD

## 問題
文字列 $S$ を `.` で分割したとき、末尾の文字列を出力してください。

https://atcoder.jp/contests/abc339/tasks/abc339_a

## 考察
文字列 $S$ を後ろ(右側)から順番に見ていきます。
`.` を見つけたら、そこから末尾までの文字列を出力し、for文をbreakで打ち切っておしまいです。

↓ 下のコードの解読でつまづきそうなところを折りたたみにしてあ

元記事を表示

[Python] 画像認識によるボーイングの機種判別

**はじめに**

私はPythonについて全くの初心者である文系人間ですが、昔からプログラムには興味があったため、今回簡単なプログラムは自分で組めるようになりたいと思い、勉強を始めました。中高年でもあるため、今話題のAIに少しでも近づきたいという見栄もありました。
飛行機について乗るのも見るのも好きなので、せっかく勉強した画像認識を使って航空機の識別ができるのではと考え、このアプリケーションを作成しました。
****

**作成したプログラム**

ボーイング社の747と787を識別するアプリケーションになります。
https://aideny-boeing-aircraft-app.onrender.com

****
**目次**
1. 実行環境
2. 画像収集
3. モデルの実行
4. HTMLの作成
5. FLASK
6. RENDER
7. 今後の活用
8. おわりに
****

**1. 実行環境**
・Visual Studio Code
・Google Colaboratory
****
**2. 画像収集**
画像収集について、Youtubeの
「【だれでもできる】

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その51 〇×ゲームに勝つための条件

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/6c0d73cc9ef4efd62d48

## これまでに作成したモジュール

以下のリンクから、これまでに作成したモジュールを見ることができます。

https://github.com/ysgeso/marubatsu/blob/master/051/marubatsu.py

https://github.com/ysgeso/marubatsu/blob/master/051/ai.py

## これまでに作成した AI

これまでに作成した AI の アルゴリズム は以下の通りです。今回の記事から、左の列を「関数名」から「ルール」に変更しました。

| ルール | アルゴリズム |
|:-:|:–|
| __[ルール1](https://qiita.com/ysgeso/items/bdbcd4c1ab1d8731df58#%E6%9C%80%E5%88%9D%E3%81%AB%E8

元記事を表示

LocalAIにおけるモデルの推論速度調査

# はじめに
LangChainのバックエンドとしてローカルでLLMを動かしたいと思っています. OpenAIのREST APIと互換で動作してくれると嬉しいです.
[LocalAI](https://github.com/mudler/LocalAI)は, OpenAIのREST APIサーバをローカルで再現しようとするプロジェクトです. あらゆるLLMをOpenAIのAPIで使いたいというプロジェクトです.

環境は次のコンピュータで, WSL2上でLocalAIを動かしています.
|||
|:—|:—|
|CPU|Ryzen 7 7700|
|Memory|DDR5-5200MHz 64GB|
|GPU|Geforce RTX 4070|

## モデル選択
LocalAIでは, 例えば次のような`gpt-3.5-turbo.yaml`ファイルを, デフォルトでは`models`ディレクトリに作成しておくと, `luna-ai-llama2-uncensored.ggmlv3.q5_K_M.bin`を`gpt-3.5-turbo`モデルとして処理します. OpenAI A

元記事を表示

【Python】お手軽に顔認証を実装する②

## はじめに

Pythonのライブラリを使い、お手軽に顔認証を実装するテーマの第2回目になります。
前回の記事はこちら –> [【Python】お手軽に顔認証を実装する①](https://qiita.com/f-paico/items/e27e4eefc8c009ecdeab)

今回は、画像データをクライアントからサーバに送り、サーバで顔認証を行い、認証結果をクライアントに返却するプログラムを実装していきます。顔認証を実践で使うときは、このパターンが多いかと思いますので、ぜひ読んでみてください。

### 今回実装するシステムのイメージ図

![【Python】お手軽に顔認証を実装する.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674933/33be4b32-027b-527f-8109-e62d0949aa82.png)

## 動作環境

– M1 Mac
– Python 3.9.6

## ライブラリのインストール

前回に引き続き、顔検出・顔認証の機能に関しては、無料で使える

元記事を表示

Pythonを用いて製品IDと複数の画像IDを対応させる方法(枝番を有するテーブルで紐づける)

# 0. はじめに
タイトルだけでは何をしたいか伝わりきらないと思いますが、
以下のような状況での対応方法について私なりの考えを投稿させていただきます。
– 製品の性能を画像から予測したい
– 一つの製品に対して複数個所の画像を取得している
– 上記の複数の画像データと製品を紐づけるための管理テーブルを準備する
– 上記テーブルは記入の負担を下げるために、横持ちのデータにしたい
– 横持ち⇒縦持ちの変換を毎回全データに対して行うと負荷が高くなるため、変換した結果を保存し、次回の変換時には未対応のIDのみを処理する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/753878/c891764e-ed04-7b72-0e94-1a5a1f6eff4f.png)

# 1. 流れ
処理の流れは以下の通りです
1. 横持ちのID対応表を読み込み(htable)
1. 縦持ちに変換済みのID対応表を読み込み(vtable)
1. 縦持ちに変換されていない行のみを選択
1. 上記で選択した行をループ

元記事を表示

@dataclassをちょっと理解する

## 環境
python: 3.12

### dataclassを使わない場合の書き方
“`
class Point:
def __init__(self, x, y):
self.x: str = x
self.y: str = y

def __repr__(self):
return f”Point({self.x}, {self.y})”

def __eq__(self, other):
if isinstance(other, Point):
return self.x == other.x and self.y == other.y
return False

def __hash__(self):
return hash((self.x, self.y))

# …etc

print(“__init__”)
point1 = Point(1, 2)
point2 = Point(1, 2)

元記事を表示

【実務で使えるLambda】describe_instancesで色々やってみる

# はじめに
実際に実務で扱ったLambdaの汎用的なコードを備忘録として残しています。
(※機密情報は載せてないのでご安心ください)

# インスタンスIDをリストで取得してみる
とりあえずこれをコピペすればOK
“`python
import boto3

client = boto3.client(‘ec2′, region_name=’ap-northeast-1’) # リージョンは任意

instances = client.describe_instances()

instance_ids = [] # 空のリストを用意

for reservations in instances[‘Reservations’]:
for instance in reservation[‘Instances’]:
instance_id = instance[‘InstanceId’]
instance_ids.append(instance_id)
“`

# インスタンスに付いているタグ名をリストで取得してみる
さっき取得した`in

元記事を表示

99%負けない鞘取りbot:Bybit編

# 趣旨
僕もせっかくbotが書けるようになったので鞘を取るようなbotを書いてみたいと思って一番簡単に書けそうなコードを書いてみました。

Bybitのステーブルコインの仕様を利用してあまりお金にならないけど、お金が減る可能性も極限に低いゆるい脱力botです。

USDC/USDTペアはBybitでは手数料がかかりません。
なので指値注文で1超・未満になった時、必ず後でその逆に行く性質を利用します。

:::note alert
以下のコードを実行する場合は全て自己責任でお願い致します。
本記事は教育目的での共有であり、投資を勧誘するものではありません。
:::

# 環境設定
まずは仮想環境を用意します。
用意しなくてもコードは実行できますが、念のためにやっておいた方が良いです。
“`
python3 -m venv myenv
source myenv/bin/activate
“`
次にディレクトリを作ってそのディレクトリの中に移動します。
“`
mkdir bybit
cd bybit
“`

# コード(コピペ可)
結果を先に表示すると以下のように注文が入ります。

元記事を表示

Transformerをコーディング from scratch

## 自己紹介(背景)

> こんにちは、Waylandです。
>
> 私はシリアル起業家であり、ソフトウェアエンジニアです。
> 私は北京、上海、深セン、シリコンバレー、東京などで15年以上にわたりソフトウェア会社を立ち上げて> きました。
> 2003年から2007年までトロント大学でコンピュータサイエンスを学びました。
>
> 私は今、独学のAI愛好者です。
>
> 私の学習の旅を通じて、大規模言語Model(LLM)のマスタリングは比較的簡単であることがわかりました。
>
> 優れたリソースはたくさんありますが、初心者には概念が不明確なことがよくあります。
>
> そのため、AIの世界に飛び込みたいという私と同じような人のお役に立てればと思い、
> この学習経路を作成することに決めました。

> この記事にある完全な構造化されたコードは、以下からダウンロードできます:
> https://github.com/waylandzhang/Transformer-from-scratch
>

この記事では、ゼロからGPTライクなトランスフォーマーを実装します。 私の

元記事を表示

FFTして周波数特性をプロットしてみる

# はじめに

最適化問題で、制約条件のもとでノルムを最小にする解を求めたいことがよくあります。そのとき、単純にノルムではなく微分したノルムを最小化することもあります。何故微分をするのか、というと、「滑らか」な解を求めたいからです。

– 微分フィルタは高周波を強調した信号になる
– 高周波を強調した信号のノルムを最小化する
– よって低周波が強調された「滑らかな」信号が求められる

で、どれくらいの拘束なのかなー、ということで、FFTしてパワーを見てみました。

# 内容

ある信号$x[n]$ に対して、フィルタ$h[n]$ を畳み込みます。

numpy の fft についてこちらに仕様が書かれています。

https://numpy.org/doc/stable/reference/routines.fft.html#

FFTして絶対値をとって、逆数を計算してみました。ただそれだけです。

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

N = 32
h = np.zeros(N)
h[0:2] =

元記事を表示

OTHERカテゴリの最新記事