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

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

ChatGPTでオセロゲームを

ChatGPTにpythonで書かれたオセロのゲームのコードを作ってもらいました。

![FireShot Capture 037 – ローマ帝国の興味深いエピソード – chatgpt.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327773/93f4f479-1392-714f-c49b-fe7bfb5650d1.png)

## 生成されたコード

“`
class Othello:
def __init__(self):
self.board = [[‘ ‘ for _ in range(8)] for _ in range(8)]
self.board[3][3] = self.board[4][4] = ‘W’
self.board[3][4] = self.board[4][3] = ‘B’
self.current_turn = ‘B’

def print_board(self):

元記事を表示

Python文法まとめ【list型】

# はじめに
こちらの記事でPythonの型についていくつかご紹介しました。
[四則演算と型](https://qiita.com/mochi_541/items/9d261e2b434795d48471 “Qiita内”)
上記は値単体についての型ですが、
この記事では複数の要素を含む型について記述します。

# list型
“`Python:
変数 = [] # 空のリスト
“`
“`Python:
変数 = [n1, n2, n3]
“`
の形で、複数の要素を扱うことができます。
`[]` (角括弧/ブラケット)内で`,`で要素を区切ります。

“`Python:サンプル
score = [3, 20, 11, 5, 2]
daifuku = [‘いちご’, ‘豆’, ‘クリーム’]
print(score)
print(daifuku)
“`
“`:実行結果
[3, 20, 11, 5, 2]
[‘いちご’, ‘豆’, ‘クリーム’]
“`
“`Python:サンプル
title = ‘三四郎’
age = 23
book = [title, age, ‘夏目

元記事を表示

物理量などを適切な有効数字で誤差とともに表示する

## 解決したい問題
あるデータをガウシアンでフィットした場合など、得られるパラメータの値と誤差の桁はパラメータによって大きく違うことがある。
$$ p_1 \exp \left(- \frac{(x-p_2)^2}{2p_3^2} \right)$$

例えば `scipy.optimizee.leastsq` で得られた値を
$p_1 = 1000 \pm 20$
$p_2 = 300.3 \pm 0.4$
$p_3 = 5.05 \pm 0.06$
のように表示したくても、パラメータの桁数を指定する方法では
`p1 = 1000.00 +- 20.34`
`p2 = 300.30 +- 0.45`
`p3 = 5.05 +- 0.06`
と不恰好になるし、指数表示でも
`p1 = 1.000+e03 +- 2.034+e01`
などのように不要な桁が現れる。
## お手製の解決法

“`python
def format_with_error(p, dp):
if dp == 0:
return f”{p}”

if dp >= 1:

元記事を表示

画像grepツールを作ってみた

# 経緯

ごく稀に、プロダクト内に書かれた文言の修正をすることってありますよね。
htmlやテンプレートファイルに文字列が記載されていれば、普通にgrepするなり、sedで一括置換できたりします。

問題は画像です・・・!

画像の中に置き換えなければいけない文字があることもあると思いますが、画像を目視で見ないと分からないですよね。
過去の経験的にも、あとから置き換えなければいけない文字を含む画像が見つかって、修正する・・・みたいなことを何度か経験したことがあります。

(本来は、画像内にあまり文字を書くのは良くないと思うのだけど・・・説明ページとかだと仕方ない場合もありますよね。)

画像内をgrepできたらいいのに、と思ったのでOCRを活用して画像内の文字列をテキスト化し、その中に調べたい文字列があるかをチェックするツールを作ってみたので紹介します。

# OCRとは

OCR(Optical Character Recognition:光学的文字認識)は、ざっくり言うと画像データのテキストを認識して、文字データに変換する機能のことです。

# 方針

pythonでいくつかライ

元記事を表示

PythonでExcelスプレッドシートにドロップダウンリストを作成する

Excelスプレッドシートの柔軟性と機能性は、あらゆる業界の人々に高く評価されています。Excelスプレッドシートでは、ドロップダウンリスト機能は、データ入力の効率と正確性を向上させる重要なツールです。ユーザーに事前に設定された選択肢を提供し、入力範囲を制限し、手動入力エラーを回避し、データ入力プロセスを簡素化し、データの一貫性を確保することができます。大量のデータを処理する場合、ドロップダウンリスト(オプションのリスト)を使用してデータ形式と内容を標準化することで、データ分析の有効性と信頼性を確保することができます。この記事では、**Pythonを使用してExcelスプレッドシートにドロップダウンリストを作成する方法**を紹介します。

– **[Excelスプレッドシートのセルのデータを使用してドロップダウンリストを作成する](#excelスプレッドシートのセルのデータを使用してドロップダウンリストを作成する)**
– **[Excelスプレッドシートの文字列を使用してドロップダウンリストを作成する](#excelスプレッドシートの文字列を使用してドロップダウンリストを作成する)*

元記事を表示

LangChainを用いて大量ファイルをロードするVectorDBを作ってみた(10)

![sky.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/f685408a-74f9-ba2e-8de3-58bc2cd11b52.jpeg)

# はじめに
 前回は、`chainlit`を`streamlit`に置き換えて、「XMLファイルの名称(10桁の数字)を入力するためのテキストボックス」と「プロンプト入力ボックス」の両方を表示させて入力できるようにしました。
 今回で10回目の記事投稿なのですが、少しずつ進化しているような気がしています。

https://qiita.com/ogi_kimura/items/55ed1488ecae8357b614

 今まで、XMLファイルの中で必要なデータのみをデータベースに登録したり、`metadata`の属性情報をデータベースに追加登録したりしてきました。少しずつ精度は上がっているのですが、これではまだまだ商用としては通用しません。
 第10回目の今回は、生成AI(ChatGPT)が推論したキーワードをVectorDB(Chroma

元記事を表示

【2024年度エラー修正版】BoT-SORTを使ってYOLOv7のモデルで物体追跡を実装する

# はじめに
日本語のサイトが2つしかなく、以下のサイトを読みながら実装しましたが、エラーが頻発しサイト通りに進まなかったです。

この記事を読めば、エラーなく実装までいけると思います。

同じようにつまづく人もいるかと思い、備忘録として投稿します。初投稿なのでお手柔らかに…

## 参考文献

この記事は以下の情報を参考にして執筆しました。1番目のサイトは学習済みモデル(yolov7-d6.pt)のダウンロードのコードが抜けているので、2番目のサイトが良いです。

– [【物体検出2022】BoT-SORTを使ってYOLOv7のモデルで物体追跡(MOT)を実装する](https://qiita.com/hkwsdgea_ttt2/items/0517bd323c341e7d38fe)
– [【物体検出2022】YOLOv7まとめ第8回 BoT-SORTで物体追跡(MOT)を実装する](https://tt-tsukumochi.com/archives/5582)

# 環境構築
Google Colabで実装します。

:::note warn
ランタイムのタイプはGPUにして

元記事を表示

Python 3 エンジニア認定基礎試験の「準備→合格」編

 2月に、Python 3 エンジニア認定基礎試験を受けましたが、不合格という残念な結果になりました。失敗原因を分析して、Pythonの基礎知識への理解が不十分です。模擬試験で100点を取りましたが、実際の試験の難易度は模擬試験より難しいです。そのため、Python 3 エンジニア認定基礎試験のホームページにておすすめられたテキストを買って、ちゃんと理解していきます。このテキストの内容はネットで読めますが、文章の構造はあまり理解しにくいだと思います。そのため、本を読みながら、私にとって分かりやすい形でまとめます。4月、もう一度試験を受けてみます。絶対受かるように頑張ります。

#第1章 食欲をそそってみようか 
2020年3月23日(月)

この章では、Pythonの特徴(メリット)をご紹介してくれます。
1.PythonはC/C++/Javaより速い。
 C/C++/Javaは通常のコーディング/コンパイル/テスト/再コンパイル、というサイクルが遅すぎると感じているかもしれません。Pythonはインタープリタ言語であり、コンパイルもリンクも必要ではないため、プログラム開発における時

元記事を表示

日本の住所解析にはこれが必要

kyoto_pattern = r'(京都府)((?:京都市(?:上京区|下京区|中京区|東山区|西京区|南区|北区|右京区|左京区|伏見区|山科区|市原区)|福知山市|舞鶴市|綾部市|宇治市|宮津市|亀岡市|城陽市|向日市|長岡京市|八幡市|京田辺市|京丹後市|南丹市|木津川市|大山崎町|久御山町|井手町|宇治田原町|笠置町|和束町|精華町|南山城村|京丹波町|伊根町|与謝野町|峰山町|日吉町|八幡町|松峰町|園部町|船井町|与謝町)+?)\s*’

prefecture_municipality_pattern = r'(…??[都道府県])((?:札幌|仙台|さいたま|千葉|横浜|川崎|相模原|新潟|静岡|浜松|名古屋|大阪|堺|神戸|岡山|広島|北九州|福岡|熊本)市.+?区|(?:旭川|伊達|石狩|盛岡|奥州|田村|南相馬|那須塩原|東村山|武蔵村山|羽村|十日町|上越|富山|野々市|大町|蒲郡|四日市|姫路|大和郡山|廿日市|下松|岩国|田川|大村|.+?)市|.+?郡(?:玉村|大町|.+?)[町村]|.+?[市区町村]|.+?市|.+

元記事を表示

Azure OpenAIのGPT-4oを使ってRAGを画像でやってみよう

## はじめに

GPT-4oがAzure OpenAIのAPIからも使えるようになりました。
現在(2024/5/31時点)は音声はまだ使えないようで、テキストと画像が入力に使えます。
そこで、RAGでの参照情報を、テキストではなく画像にしたい、というのが本記事の内容です。

RAGでは通常、参照情報を文字列にしてプロンプトに入れて使っています。
参照情報に表やグラフがある場合は、適宜文字列に変換していました。ですが、画像をそのまま渡してしまえば、表やグラフの文字列への変換は必要ありません。
ということでやってみます。

(今までも、GPT-4 Turbo with Vision等で画像使えましたが、GPT-4oは値段がGPT-4の凡そ半額ぐらいになり、性能もいいらしいので使ってみようという感じです。)

## 画像の準備

サンプルとして、以下を用意しました。

![zoo_table.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3781545/64883541-1705-2e27-3ce5-f3

元記事を表示

座標とポリゴンの距離を算出する方法

# はじめに
はじめまして!データサイエンティストの渡邊です。株式会社GEOTRA(@GEOTRA )にてGIS(Geographic Information System:地理情報システム)データを用いた分析を行っています。

本記事ではgeopandasで座標とポリゴン間の距離を算出する方法を紹介します。

# 背景
– 「あるエリアから◯km以内の座標を抽出する」といった分析を行いたいときがある
– 単にそのエリアの代表点をとってその点との距離を算出するのもいいが、geopandasを用いれば座標とポリゴン間の距離をすぐに算出できる

# やること
https://geopandas.org/en/stable/docs/reference/api/geopandas.GeoSeries.distance.html

– `geopandas.GeoSeries.distance`を用いる
– 返り値の単位はメートル
– `POINT` と `POLYGON` 間の距離はもちろん、 `POINT` と `MULTIPOLYGON` 間の距離も算出できる

# サンプルコー

元記事を表示

画像処理エンジニア検定の合格体験記と勉強法

# 画像処理エンジニア検定の合格体験記

こんにちは、昨年画像処理エンジニア検定エキスパートを無事に取得しました。
私の合格体験を共有することで、これから資格を目指す皆さんの参考になれば幸いです。
![IMG_7700.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2516272/1d165505-2c69-f2c0-ad45-8e3fd6e4e2bf.jpeg)

## 勉強のきっかけ

私はもともと画像処理技術に興味があり、仕事でも関連するプロジェクトを担当することが増えてきました。そこで、より専門的な知識を身につけるために画像処理エンジニア資格を取得しようと決心しました。

## 勉強方法

### Q&Aサイトの活用

最初に取り組んだのは、[画像処理エンジニア資格Q&Aサイト パート1](https://tech-deliberate-jiro.com/gazo-kentei-qa-part1/)と[パート2](https://tech-deliberate-jiro.com/gazo-ke

元記事を表示

🍴入力特化翻訳。ほー いいじゃないか、こういのでいいんだよ こういうので(control+Alt+Dだけ翻訳)Oh, that’s good. That’s good. That’s good.

## 開発の経緯
– 学生レベルの英語力で海外でBrSEをしていた時に非常に困った言語の壁・・・。
– 出来るだけ簡単に翻訳できるよう作ったものです
– Deeplのapikeyを取得してください。クレカあればすぐに作れます。月に50万文字まで無料で翻訳。https://www.deepl.com/ja/pro-api?cta=menu-pro-api
– 日本語は英語に英語は日本語に翻訳します。他の言語の場合deeplの対応言語であれば英語に翻訳されます。
## 工夫したとこ
– アプリ起動を意識せずに使用できるようショーカット翻訳にこだわりました。バックグラウンドで機能します。
– 目指したのは、
 ほー いいじゃないか
  こういのでいいんだよ こういうので…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3808329/16afe5f9-d3e2-2966-4aed-f456a5d0bf1c.png)

## 使い方
– 翻訳したいテキストをコピー(control+c)し

元記事を表示

Python f-strings ちゃんと知ってる?

これは Python 3.12 時点での話:bug:
みんな知ってそうなことは書きません。

最初の方では !r, !s, = 指定子、そのあとに文字列と新機能の話。

## 基本

“`python:f-stringsのキホン
from datetime import datetime

animals = [
“dog”, “goat”, “wombat”, “cat”,
]

# 大体のものは自然に文字列になる
print(f”animals: {animals}”)
# animals: [‘dog’, ‘goat’, ‘wombat’, ‘cat’]

# 関数、演算、リスト内包表記…式の中で評価して文字列にしてくれる
print(f”now: {datetime.now()}”)
# now: 2024-06-07 02:31:03.078175
print(f”{[2**n for n in range(1, 12)]}”)
# [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
“`

## ちゃんと知ってる

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その87 ファイルダイアログの設定とOutputウィジェット

# 目次と前回の記事

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

https://qiita.com/ysgeso/items/5e5b2fdaf9eda23a9230

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

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

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

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

https://github.com/ysgeso/marubatsu/blob/master/087/util.py

## ルールベースの AI の一覧

ルールベースの AI の一覧については、下記の記事を参照して下さい。

https://qiita.com/ysgeso/items/10d1d01192c014173e4b

# ファイルダイアログに関する問題点

[前回の記事](https

元記事を表示

Balanced Parentheses(括弧の対応検査)

## 問題

3種類の括弧 ( ),{ },[ ]からなる文字列について,以下の条件を満たすか否かを判定したい.

+ 同種の括弧同士が,必ず閉じている

+ 具体例
⭕️:()  ,([ ]) , { } [ ], ([ ] {[ ]} )
❌:( ,   [[[,   {),    ([{ ])

## 発想
+ かっこのペアを打ち消しあって,全てなくなったらOK
+ 左から順にスタックにpush➡️打ち消しあったらpopを繰り返し,スタックが空になればTrueを返す

## コード例(Python)
“`python
from collections import deque

def judge_balance(S):

stack=deque()

for c in S:

# スタックが空でなければ,整合性を検査
if stack:
if stack[-1]=='(‘ and c==’)’ :
stack.pop()

元記事を表示

【Python】「Swiftのアレ、Pythonだとどうだっけ」を自分なりに

# 誰?
基本的にpythonを書いているものです。
SwiftでiOSアプリ開発の経験も少しあります。
元からpythonメインだったのですが、仕事の関係でSwiftメインになり、またpythonに戻ってきました。

# 何を思ってこの記事を?
長いことpythonを離れてSwiftを書いていたら、Swiftチックな考えが残ったままPythonを書くことになっています。
戻ってきてすぐは、Swiftの文法は思いつくのにpythonの書き方が思いつかなかったりしました。
そんな自分が、「Swiftのアレ、Pythonだとどうだっけ」と思って自分なりに出した答えを書いておこうと思います。
全部は網羅しきれないので、思いついたものを書いていきます。思いつかなくなったらそこで筆は止まります。
また、これが本当に正しいとは限りません。

:::note warn
基本的には、Swift→pythonに書きなおすので、逆はしません。
独断と偏見と深夜テンションです。
間違っていたり、内容が薄っぺらい可能性があります。
こんなもん、何をいまさら偉そうに語っとんねん。的なことは怖いので言わないでく

元記事を表示

ラベル名対応したclassification_report

以前にclassification_reportをデータフレーム化する記事を書きました。

https://qiita.com/murasaki1994/items/ee229b7abc0e1b4a7d1f

今回はこの記事で作った関数をさらに改良したものを作ったので書いてみようと思います。
改善点としてはラベル(文字列)に対応する内容になっています。具体的な内容は使用例をご覧ください。

# 関数
“`Python3
import pandas as pd
def classification_report_dataframe(y, y_pred, label=None):
rep = classification_report(y, y_pred, output_dict=True)
dst = []
index = []
for col in rep:
if col == “accuracy”:
index.append(col)
dst.append([“”, “”, rep[“a

元記事を表示

【Tkinter】Python tkinterはClassで書いたほうが良い

# はじめに
以前Tkinterに関する記事を書いたときはわからなかったのだが、いろいろツールを作成しているとClassを使ったほうがイケてるし使いやすいと感じるようになった。
自分だけが使うのであればコマンドラインで使用してしまうが、ツールを普及させようと思うとGUI化がマストになってくる。ここらでTkinterの考えをfixし、見やすいコードを書こう(自戒)

以前の記事

https://qiita.com/yulily/items/42f84226d4ecdf282dd8

# Classを使用するメリット
– `root = tk.Tk()`が複数ウィンドウでごちゃつかない
– ウィンドウと関数(メソッド)間で変数を共有できる
– `entry`を増やしたり消したりした際の修正が楽
– 思いついたら追記するよ

# 目標
こういうGUIを作る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2716347/2fe5edaa-2215-64c8-6e04-fe6829c6

元記事を表示

LangChainを用いて大量ファイルをロードするVectorDBを作ってみた(9)

![sky.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3784222/2a38f955-17d6-e4f9-7e11-ae636cda52f2.jpeg)

# はじめに
前回は、`chainlit`を用いて、プロンプトの最初の10桁はファイル名、11桁目以降は質問内容という、プログラムを作っていました。`chainlit`について、複数の入力欄を出力できるサンプルを見つけることができなかったからでした。とてもこんなプログラムでは、商用利用することはできません。

https://qiita.com/ogi_kimura/items/bee253fcb345c7428224

そんな中、いろいろなプログラミングのサンプルを検索していくと、`streamlit`というものを見つけました。
これであれば、私が考えていた「ファイル名をテキストボックスに入力して、プロンプトを別のテキストボックスに入力する」ということが出来そうです。

# chainlit
では、前回の投稿記事で、`chainlit`の場合

元記事を表示

OTHERカテゴリの最新記事