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

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

LangChain+PGVectorの環境でメタデータに基づいたDocument削除を行う

– タイトルの件についての記事です
– AIで生成したまとめ、その後に本文(まとめの元ネタである自分の文章)という構成になっています

## OpenAI(GPT-4o)によるまとめ
### 経緯
LangChainのバージョン0.2.14を使用し、VectorStoreとしてPostgreSQLとPGVectorを組み合わせた環境を前提としています。
この環境で、ドキュメント(Document)のメタデータを利用して特定のドキュメントを削除する方法が分からず、
最終的にはデータベースのテーブルに直接アクセスして削除する方法を選択しました。

### 目的
Embeddingの元となったファイルが更新された際に、対応するドキュメントをメタデータ(例:`source: ファイル名`)に基づいて削除し、
新しいドキュメントを追加するプロセスを実現することが目的です。

### 原因
LangChainの公式ドキュメントやGitHubのディスカッションを調べても、メタデータに基づいてドキュメントを削除する方法が明確に記載されていなかったためです。
特に、`similarity_search`

元記事を表示

Qiskit 1.0で量子計算

久しぶりにQiskitで遊ぼうと思って、Qiskit 0.43を使ったコードを動かしたところ、[IBM Quantum Platform](https://www.ibm.com/quantum)へジョブを投入できなくなっていることに気づきました。

せっかくの機会ということでQiskit 1.0.0を使ったコードに書き直したので、整理した内容を共有しようと思います。

1.0では、“`from qiskit import execute, Aer, IBMQ“`が使えなくなっているため、これらの置き換えが主な変化点となります。

## 0. 準備
#### ライブラリをインストール
関連するライブラリをインストールします。
今回はqiskit 1.0.2, qiskit_ibm_runtime 0.22.0を使用します。
“`
pip -q install qiskit==1.0.2
pip -q install qiskit[visualization]==1.0.2
pip -q install qiskit_ibm_runtime==0.22.0
“`

#### アカ

元記事を表示

日本工作機械工業会の統計ページからPDFリンクを自動抽出するPythonスクリプト

日本工作機械工業会(JMTBA)の統計ページから、各月の統計情報を含むPDFリンクを自動的に抽出するPythonスクリプトを紹介します。このスクリプトは、BeautifulSoupとrequestsライブラリを使用して、指定されたページからPDFファイルのリンクと対応する日付を抽出するプロセスを自動化します。

https://www.jmtba.or.jp/statistics/

## ステップ1: メインページの内容を取得
まず、指定されたベースURLから、統計情報が含まれるリスト項目を抽出します.

“`python
import requests
from bs4 import BeautifulSoup

def extract_statistics_pdfs(base_url):
# ベースURLのページを取得
response = requests.get(base_url)
response.raise_for_status()

# BeautifulSoupでHTMLを解析
soup = BeautifulSoup(re

元記事を表示

なぜ完璧なバグ検出プログラムは存在しないのか?【計算理論入門】

## 記事の内容
この記事では、計算理論の基本的な成果に触れたい。

それは、**絶対に書くことができないプログラム**の存在だ。

この事実は、現実的に重要である「完璧なバグ検出プログラム」の存在にも関係する。

具体例と証明の考え方をまとめたい。
具体例にはPythonのコードを使用する。

## 決して書くことができないプログラム

かなり不自然な定義だが、以下のようなコードを考えよう。
「Pythonのコード」を入力として受け取るという関数だ。

“`python
def notYesOnSelf(P):
if P(P) == ‘yes’:
return ‘no’
else:
return ‘yes’

“`

面白いところはここからだ。
**この関数に自分自身を引数として与えたらどうなるのか?**

そうすると矛盾が生じる。よって、この関数、つまり、notYesOnSelf()は存在しないことが導かれる。
* P(P) = ‘yes’と仮定すると、P(P)は’no’を出力する。矛盾。
* P(P) = ‘no’と仮定す

元記事を表示

PythonでO(1)ランダムアクセス可能なdequeの新規提案

はじめましての人ははじめまして。[alumi](https://x.com/alumi_02)と申します。
まず本編の前に先駆者であるごりちゃんさんへ感謝とリスペクトを。

Pythonの標準ライブラリのdequeは、内部実装の都合で任意要素へindexを指定して参照するランダムアクセスに$O(N)$かかります。
C++のdequeは$O(1)$でランダムアクセス可能なため、これを前提とした問題が出されるとPython勢は慌てふためくことになります。
しかし偉大な先駆者であるごりちゃんさんが[リングバッファで実装したdeque](https://prd-xxx.hateblo.jp/entry/2020/02/07/114818)を公開してくださっているので、Python勢がこのケースで慌てることはなくなりました。良かった。

この記事ではごりちゃんさんの実装よりもappend, pop操作が若干早い実装ができたので、実装とその説明をしたいと思います[^1]。

[^1]: 実用上はごりちゃんさんの実装で困ることはないので、そんな実装もあるんだな~という気持ちで読んでください

##

元記事を表示

JinjaのEnvironmentは undefined=StrictUndefined とするのがオススメ

# はじめに
JinjaはPythonで使える強力なテンプレートエンジンです。
たとえば、下記のように使うことができます。

~~~ python
import jinja2
e = jinja2.Environment()
t = e.from_string(‘私の名前は {{name}} です。’)
s = t.render( { ‘name’: ‘ジョンスミス’ } )
print(s) # 私の名前は ジョンスミス です。
~~~

# 動機
テンプレートを書いてるときのタイポ、あると思います。
しかし、通常だとJinjaは未定義シンボルを空値として扱うだけです。

~~~ python
import jinja2
e = jinja2.Environment()
t = e.from_string(‘私の名前は {{nmae}} です。’) # タイポ!
s = t.render( { ‘name’: ‘ジョンスミス’ } )
print(s) # 私の名前は です。
~~~

テンプレートが短ければミスは明らかですが、長くなるとそうはいきません。

# undefined

元記事を表示

Kaggle 自動車価格予測に挑戦

# はじめに
これまで約半年間機械学習を勉強してきた腕試しとしてKaggleのコンペに挑戦してきました。([大学生の卒業可否予測](https://qiita.com/gucchi_JPN/private/25cdcddb73a604cbeab2), [Benz社の実験時間予測](https://qiita.com/gucchi_JPN/items/4f03b7b37c3ae2336e26))

今回は3つ目の課題として執筆時(24年08月19日)に進行中であった[中古車の販売価格予測](https://www.kaggle.com/competitions/autoam-car-price-prediction/overview)に挑戦しました。データの欠損もなく、特徴量もわかりやすいものが多いため初学者向きと考え、取り組みました。
これからPythonや機械学習を始めようと思っている方、学習をすでに始めており、力試しをしてみたいと思っている方にわかりやすい記事を目指します!
ご意見やご質問頂けたら嬉しいです。

# 挑戦した課題
– [Kaggle car price](https

元記事を表示

Python モジュールのreloadを使ってコードを動的に更新

## 記事の概要
Pythonでプログラムを書いていると、コードを変更するたびにプログラムを再起動する必要があって面倒に感じたことはありませんか?本記事では、`importlib.reload()`という便利な機能を使って、プログラムを停止せずにコードの変更を反映する方法を紹介します。この技術を使えば、特に開発中のテストや調整が格段に楽になりますよ!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/197ce6b4-0e70-1bfd-f887-ac1c8c3cbc16.png)

## なぜreloadが便利なの?

1. **時間の節約**: プログラムの再起動が不要になり、開発スピードが上がります。
2. **即時フィードバック**: コードの変更結果をすぐに確認できます。
3. **柔軟な開発**: 実行中のプログラムに新しい機能を追加できます。

## サンプルコード

以下に、簡単な例を示します。まず、2つのファイルを作成しましょう。

1. `greeti

元記事を表示

「ハノイの塔」(ランク A) を円盤を動かさずに解く

# はじめに
[paiza x Qiita のプログラミング問題](https://paiza.jp/pages/campaign/paiza-qiita “paiza x Qiita コラボキャンペーン”) の [ハノイの塔](https://paiza.jp/works/mondai/real_event/hanoi “ハノイの塔 (paizaランク A 相当)”) をトライしました.

[ハノイの塔](https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94 “ハノイの塔 – Wikipedia”)は再帰の例として有名です. 私も最初はオーソドックスにハノイの塔の操作をするコードを書き, 指定された回数で操作をやめ, そのときの状態を出力するものを作成しました.

その後, いろいろと考えていくうちに, 円盤を動かす操作をしなくても, 指定された回数から円盤の状態を直接求められることに気付き, それをコードにしてみました.

以下に, 概略を説明します.

# 作戦
## n 番目の円盤

元記事を表示

知財のあれこれをPythonで何とかする

### 記載不備を何とかする
特許庁の審査官から明細書の記載不備で拒絶されることはよくあることですが、初出の用語に「前記」をつけるといった単純ミスでの拒絶は避けたいものです。今回はそのような前記に係る記述ミスを防止する為のチェックプログラムを紹介したいと思います。

“` program1.py
#part1 初期設定
import re
f = open(‘meisai.txt’, ‘r’)
meisai = []
ms_base = []
m_text =[]
m_text = f.read()
ms_base = m_text
f.close()

ms_base=ms_base.replace(“前記”,”th”)#「前記」を「th」に置き換える
ms_base=ms_base.replace(“該”,”th”)
meisai = re.split(‘th’,ms_base)#文章を「th」で分割する
del meisai[0]#最初の要素に前記はないので削除

#part2 文頭から助詞までの文字を切り出す
#文中の助詞を@に変換
joshi =[“の”,”、”,”は”,”

元記事を表示

振り子とシミュレーション

# はじめに
単振り子や2重振り子の運動方程式は、ラグランジアンを用いることで求めることができる。しかし、単振り子は周期的な単純な運動をする一方で、2重振り子は複雑な運動を行う。今回は、Pythonを用いて運動方程式を解析的に解くことで単振り子や2重振り子の運動の様子をシミュレーションすることを目的とする。ただし、シミュレーションに用いた運動方程式は以下のサイトを参考にしたので、導出等を知りたい方は参考にして欲しい。

https://www.aihara.co.jp/~taiji/pendula-equations/present-node2.html

# 単振り子
## 運動方程式
xy平面に質点$m_1$が存在していて、原点を支店として糸で繋げられている単振り子を考える。
重力は-y方向にかかっているとする。
質点の座標は糸の長さ$l_1$,重力方向との角度$\theta_1$を用いて以下のように考えることができる。

“`math
\begin{equation}
\left\{ \,
\begin{aligned}
& x_1 = l_1 sin \the

元記事を表示

モンテカルロ法シミュレーション。

![5877cab6-12b1-43ac-adbc-eb448e279f5f.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/65077686-d9c5-0661-61fe-002aa3330a91.png)

#### ショートストーリー: 「データが語る、東京の米の未来」

東京の高層ビルの谷間にあるオフィスで、田中陽介はモニターに映し出されたコードに集中していた。彼の仕事は、未来の東京の食料供給を支える重要なプロジェクトだった。それは、東京に住む何百万人もの人々にとって最も重要な食料、つまり「米」の適正在庫量をデータに基づいて予測することだった。

日本の首都東京は、世界中のどの都市よりも多くの米を消費する。だが、都市化と人口の変動に伴い、米の需要は変わり続けていた。もし在庫が不足すれば、都市全体にパニックが広がるだろう。一方で、過剰な在庫は無駄なコストを生む。そこで陽介は、これらの複雑な問題を解決するために、モンテカルロシミュレーションを使ってデータを分析することにした。

元記事を表示

新たな計算の形。 64ビット(8バイト)のメモリを持つシンプルな並列ビット演算計算機。

![56861f56-31c7-4edc-8860-8b00ad247eab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/dbf2cbee-170a-be70-d2ef-199663e6280c.png)

#### ノイマン型計算機と並列化されたGPUの物語
東京の摩天楼の一角にあるハイテク企業で働くプログラマ、田中悠一は、今や彼の専門知識が試される重要なプロジェクトに挑んでいた。彼の目の前に広がるのは、かつて世界を席巻したノイマン型計算機の古典的なモデルだ。しかし、今日はそれを新たな次元に進化させるという、並列計算のシミュレーションを行う日だった。

ノイマン型計算機とは、メモリーを一次元の配列(チューリングマシンの無限に長いテープ。)として保持し、そのメモリーに対して演算ユニットが計算を行うという極めてシンプルなモデルだ。悠一は、これを何度も勉強し、実装し、理解してきた。しかし、今日彼が取り組んでいるのは、この古典的な計算機モデルを並列化し、GPUのような強力な

元記事を表示

[python] [slack] files.upload API 廃止に伴う対応 requestsモジュール編

こんにちは。
マイクロアドのタカギです。

slackのfiles.upload API が廃止になるとのことで、対応が必要になるため、サンプルコードを作ってみました。
公式SDKを使用する場合はfiles.upload V2を使用すれば問題ないようですが、今回もrequestsモジュールを使用してSlack通知してみようと思います。

https://qiita.com/seratch/items/971980506da92ea6c8db

# やること
前回と同じことをやります。
– slackにメッセージを投稿する
– 投稿したメッセージのスレッドにファイルを投稿する

※前回

https://qiita.com/mtakagi555/items/02c24ff83988827330c0

# 準備
まずslackのトークンを環境変数にセットします。
これでうっかりトークンがインターネットに公開されてしまうリスクを減らします。

“`bash
export SLACK_BOT_TOKEN=”xxxxx”
“`

# サンプルコード
省略していますが、mypyとかも使っていま

元記事を表示

日本語プログラミングアシスタント (HTML対応)。AIを使ってゲームコードを自動生成するシステム。

![スクリーンショット 2024-08-12 231734.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/96091278-4ee1-e6fb-8e36-2754df56f1ed.png)

https://qiita.com/muratatetsutaka84/items/bf1519d64501cbbebda9

#### ショートストーリー: 「東京のプログラマとAIが紡ぐゲームの世界」
東京の夜は深く、ネオンの光が街を彩る中、一人のプログラマが熱心にキーボードを叩いていた。彼の名前はタケシ。東京の先端IT企業で働く彼は、最近特別なプロジェクトを任されていた。それは、AIを使ってゲームコードを自動生成するシステムを開発するというものだった。

タケシのデスクには、最新のディスプレイと、温かい緑茶のカップが置かれていた。ディスプレイには、JavaScriptで書かれた複雑なコードと、リアルタイムで生成されるゲームのプレビューが映し出されている。タケシは、AIが生成したコードがどのよ

元記事を表示

ComfyUIでpaint by exampleを実行するカスタムノードを自作して公開しました

この記事は自分で作成した[paint-by-example_comfyui](https://github.com/phyblas/paint-by-example_comfyui)というComfyUIプラグインの日本語版説明となります。

# きっかけ

 (*ノードの使い方を読みたいだけの方はこの前置き部分をスキップしても構いません*)

ComfyUIを使い始めてからもう2ヶ月くらい経って、この間色んな機能を使って随分と楽しんでいました。ComfyUIは色んなノードの組み合わせでワークフローを作るという仕組みで動いているが、そのノードはComfyUI本家のノードだけでなく、他の人が作って公開しているノードや、自分で作成するノードも使えます。そのようなノードは「カスタムノード」と呼ばれています。

私も色んなカスタムノードを使っていて、最初はノードの作り方なんて知らなかったが、どのノードもコードが公開していて中身のコードを読むことができます。そして読んでみたらそこまで難しいコードではなく、自分でも書くことができるとわかりました。

カスタムノードを書くのに使う言語は馴染みのPyth

元記事を表示

f18: pythonista3 現状 + stash 起動エラー暫定回避

.

### **[ 01. pythonista3 の現状について ]**

2023/05 に pythonista3 v3.4 がリリースされて以降、
現在、暗雲が立ち込めている感じです

この pythonista3 v3.4 は、
python 3.10 のサポートがされているのですが、
バグが多く、フォーラムでは、
報告や改善要望などがあがっておりました

わたくしもいくつか報告をさせていただいていたのですが、
2024/06 にフォーラムにアクセスしたところ、
アクセス不可の状態になっております

Pythonista Forum
https://forum.omz-software.com/

心配するユーザーの方々も動向を見守ってます

Is Pythonista (Python for iOS/iPadOS) no longer with active development and support?
https://www.reddit.com/r/Python/comments/1ca9x6h/is_pythonista_python_for_iosip

元記事を表示

S3へのアップロード、Object上書き防止の仕組み作りが簡単になった(conditional writesの話)

# 概要
8月20日に、以下のタイトルでAWSから発表がありました。
**Amazon S3 now supports conditional writes**

https://aws.amazon.com/jp/about-aws/whats-new/2024/08/amazon-s3-conditional-writes/?utm_source=tldrdevops

今回の機能ですが、
オブジェクト作成前に同一オブジェクトの存在を確認し、存在する場合にはアップロードをさせないためのパラメータを、APIリクエストで設定できるようになった、という話です。

つまり、**オブジェクトの上書き防止の仕組みをこちらで用意しなくてよい**ということです!

**これまで**
1. `XXXX`というオブジェクトの存在確認のためのAPIリクエストを実行
2. 存在判定を実施
3. 存在しなければ書き込みAPI実行

**今後**
1. 書き込みAPI実行時のパラメータ追加のみ

### 対象となるAPI(2つ)
– PutObject(今回はこっちで動作確認を進めます)
– Complete

元記事を表示

相手に寄り添った Python コードの作成

# 相手に寄り添った Python コードの作成

## はじめに

はじめまして。私は大学院生です。

この記事では、Python コードの書き方に気を使うことで、他の人のストレス軽減に繋がるような記事を書きます。既に他のエンジニアの方々も多く記事を公開されていますので、被っている部分が多いです。

あくまでも私にとって良いコードなので、より良いコードの書き方もあると思います。気軽に見ていただけると嬉しいです。

この記事が、Python を使うエンジニアの負担軽減に寄与できれば幸いです。

## コメント

コードにコメントを残すことはありますが、不要なコメントは消すべきです。残すべきコメントとしては、以下のようなコメントです。

– To do などの今後やるべきことを書いたコメント

– 一眼見て理解することが難しいコードに対するコメント
– 関数
– クラス
– (三項演算子)
– (内包表記)

## ライブラリのインポートの位置

ライブラリは、基本的には各ファイルの先頭に記載した方が良いと思います。

“`python:main.py

元記事を表示

Pythonでインスタンス変数とクラス変数の違い

## 記事の概要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/658ae86a-4965-603b-4663-c06753bc0db6.png)

Pythonのオブジェクト指向プログラミングにおいて、インスタンス変数とクラス変数は基本的かつ重要な概念です。これらの違いを深く理解することで、より効率的で柔軟なコードを書くことができ、さらには予期せぬバグを防ぐことができます。本記事では、これらの変数の違い、使用方法、そして中級者向けの高度なトピックについて、具体的な例を交えて詳しく説明します。

## 基本概念の詳細説明

### インスタンス変数
インスタンス変数は、クラスの各インスタンス(オブジェクト)に固有の値を持つ変数です。

– 定義:通常、`__init__`メソッド内で`self.変数名 = 値`の形で定義します。
– アクセス:インスタンス名を通じてアクセスします(例:`instance.変数名`)。
– 特徴:各インスタンスで独立した値を持ち、一つのイ

元記事を表示

OTHERカテゴリの最新記事