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

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

知って得するPythonの反復処理: イテラブルとイテレータの隠れた機能

## はじめに

Pythonプログラミングの世界には、日々の開発効率を大きく向上させる重要な概念があります。その中でも特に注目に値するのが、イテラブル(iterable)とイテレータ(iterator)です。これらの概念は、一見すると基本的に見えるかもしれません。しかし、その奥深さと応用力は、あなたのコードの品質と効率性を飛躍的に高める可能性を秘めています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/64dae08e-6756-cc49-4d34-14166604eafa.png)

本記事では、イテラブルとイテレータの基礎から応用まで、実践的なテクニックと共に解説します。これらの知識を身につけることで、以下のような利点が得られます:

1. コードの可読性と保守性の向上
2. メモリ使用効率の最適化
3. 大規模データの効率的な処理
4. 複雑な問題に対する洗練された解決策の実装

Pythonの経験が浅い方から、すでにある程度の経験を積んだ方まで、この記事を通

元記事を表示

Pythonで画像から文字列を読み込み(OCR)

# 1.ライブラリをインポート
“`
pip install pillow
pip install pytesseract
“`
# 2.Tesseract-OCRをインストール
https://digi.bib.uni-mannheim.de/tesseract/?C=M;O=D

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/5a365c9c-7eb1-6693-cbe4-5fea4c1ab1d0.png)

# 3.日本語のOCRの訓練データを取得
下記のサイトからダウンロードして、「Tesseract-OCR\tessdata」のパスに格納する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368087/27c43dc1-c827-ca57-f9f7-6f03164a8a64.png)

https://github.com/tesseract-ocr/tessd

元記事を表示

Pythonで[SSL: UNEXPECTED_EOF_WHILE_READING]なエラーになる

社内PCにAnacondaをインストールしてPython/JupyterNotebookでpipすると「SSL: UNEAXPECTED_EOF_WHILE_READING」なエラーになる

プロキシ経由でインターネットにアクセスするので.condarcファイルにプロキシを設定しており、urllib.request.getproxiesの出力でHTTPとHTTPSのプロキシサーバのURLが出力されるので、プロキシサーバのアドレス自体は認識してくれていると思う

いろいろ試して、pipコマンドの引数でプロキシサーバを指定する場合、httpだと成功するがhttpsだと同じエラーになる
あと、.condarcファイルで「ssl_verify:false」とした部分が無視されていそう

というわけで、SSLというか証明書らへんの問題だと思う

解決したら続きを書きます

元記事を表示

ボード線図とアンプ

“`
import sympy as sp

# Define symbols
K, V_GS, V_T, lambda_, V_DS, dV_GS, dV_DS, v_gs, v_ds = sp.symbols(‘K V_GS V_T lambda_ V_DS dV_GS dV_DS v_gs v_ds’)

# Define the main equation
I_Ds_star = K * (V_GS – V_T)**2 * (1 + lambda_ * V_DS)

# Compute the derivatives
dI_Ds_dV_GS = sp.diff(I_Ds_star, V_GS)
dI_Ds_dV_DS = sp.diff(I_Ds_star, V_DS)

# Define the small-signal parameters
g_m = dI_Ds_dV_GS
r_o_inv = dI_Ds_dV_DS

# Express the differential form
dI_Ds = dI_Ds_dV_GS * dV_GS + dI_Ds_dV_DS *

元記事を表示

コンデンサ形計器用変圧器(CVT)の電圧に対する過渡応答解析

# はじめに
特別高圧の送電線の電圧を『直接』計測することは不可能に近い。理由としては、高電圧より高い絶縁性能を有していなければならない。そこで、コンデンサを用いて系統電圧を分流させることで電圧を低下させるという方法が考えられる。この方法で系統電圧を測定可能電圧にする機器をコンデンサ形計器用変圧器(以下、CVT)という。今回は、CVTを系統に接続した瞬間に生じるコンデンサ電圧の過渡応答についてPythonを用いてシミュレーションを行う。

# 問題設定とモデル
電験一種H30の電力管理の問3をモデルとする。詳しい問題設定は電験王様を参考にした。

《電力・管理》〈送電〉[H30:問3] コンデンサ形計器用変圧器(CVT)に関する計算問題

まず、CVTの回路設定は以下のとおりである。(画像は電験王様のサイトより引用した) 

![H30問3問題1-3(CVT回路図).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/dff9c5d6-8192-8d1d-e81a-8f51424e288b.jp

元記事を表示

FastAPIでAPIルーターのテストコードを書く方法:SQLiteとベクターカラムの扱い

FastAPIを使用してAPIルーターのテストコードを書く方法について説明します。

特に、テスト用にオンメモリのSQLiteテーブルを使用する際のベクターカラムの扱いについて解説します。

# テストコードを作成に必要なパッケージ

まず、FastAPIアプリの依存関係がすでにインストールされていることを前提として、以下のパッケージが必要です。

“`
pytest = “^8.2.2”
aiosqlite = “^0.20.0”
httpx = “^0.27.0”
pytest-asyncio = “^0.23.7”
aiohttp = “^3.9.5”
pytest-aiohttp = “^1.0.5”
“`

# テスト対象

以下は、テストしたいルーターの設定を説明します。

## データモデルの例

例えば、次のようなデータベースモデルがあるとします。ここで、ベクターカラムが存在していることに注目してください。

“`python
class AnkiNoteModel(Base):
“””モデルに基づいてテーブルを作成します。”””

__tab

元記事を表示

Graphを構築してみる

# はじめに

本記事では,[前回の記事](https://qiita.com/mrsd/items/2269caf36bb5531ba25a)で少し述べた,Graph RAGについて書いていこうと思います.ただし,RAGの部分はうまくいかなかったのでKnowledge Graphを構築するまでの過程について記載いたします.

# Graph RAGとは

そもそもGraph RAGの意義は,RAG(検索拡張生成:Retrieval-Augmented Generation)という,ドキュメントをベクトルにして,それをもとに回答させる手法を発展させることです.RAGでは,そのドキュメントに含まれる固有名詞の背景や関係性までを汲み取ることができません.指示代名詞が何を指しているのかも前後の文脈で分かる部分であるため,これらを明確にするためGraphを用いるアプローチです.つまり,関係性をわかるようにして,それを判断材料に含めてLLMに回答させることで,より精度の良い結果を得ることを目指しています.

![image.png](https://qiita-image-store.s3.a

元記事を表示

[Python] 限界感度法で調整されたPIDコントローラの制御性能が低いことを示すスクリプト

# 目的
ジーグラ・ニコルス(Ziegler-Nichols)の限界感度法は有名であるが、調整されたPIDコントローラの制御結果はオーバーシュートが大きく、収束までに時間がかかる特徴がある為、制御性能が低く使えないといっても過言ではない。『Pythonによる制御工学入門』を参考にして限界感度法で調整されたPIDコントローラの性能が低いことを示すスクリプトを作成したので、制御結果を確認していただき、モデルマッチング等の他の手法を試すきっかけになれば幸いである。

尚、限界感度法は電子計算機(ENIAC)誕生よりも早い1943年に考案されており時代背景から、目標値が変化する自動制御ではなく目標値が常に一定であるレギュレータ用として考案されている可能性がある。

# シミュレーション条件
・プラント:2次遅れむだ時間系
・ゲイン調整方法:PID制御(※1) と No Overshoot (※2)
![image.png](https://qiita-image-store.s3

元記事を表示

ReFTでファインチューニングして保存したモデルがロードできない時の解決方法

LLMのファインチューニングを効率的に行うことのできる[ReFT](https://arxiv.org/abs/2404.03592)という手法を、Pythonの`pyreft`ライブラリでやってみました。
ファインチューニングしたモデルを保存するところまでは難なくできたのですが、その保存したモデルをロードするところでエラーが発生し、解決までにしばらく時間を要してしまったので、その時の備忘録です。

# 起きていたエラー
[公式](https://github.com/stanfordnlp/pyreft/blob/main/main_demo.ipynb)の方法と同様にファインチューニングしたモデルを以下のように読み込もうとしました。ちなみに環境としてはGoogle Colabを使っていました。インストールした`pyreft`のバージョンとしては`pyreft==0.0.6`でした。
“`python
import torch, transformers, pyreft
device = “cuda”

model_name_or_path = “microsoft/Phi-3-m

元記事を表示

RaspberryPi4をPIGPIOが動かせるまで構築

久々にRaspberry Pi 4を触る機会があったので、そのついでに再構築することにした。
その際、例のpep668のおかげでpip installが素直にできないと知ったので、再構築するまでの記録を備忘録として残す。

## 使用ハード
Raspberry Pi 4 4GB
シリコンパワー SSD M.2 SP256GBSS3A55M28

*USBbootでSSDから起動。

## 使用するOS
Raspberry Pi OS 最新版 64bit (2024年8月時点)

## Rasberry Pi ImagerでmicroSDにOSをインストール

インストール時のオプションでホスト名、ユーザーIDとPassword、ロケールの設定、SSHの有効化は設定する。

## OSが立ち上がったらIPアドレスを固定
wifiでつないでるためwifiの設定
#### GUIから
右上のタスクバーから赤丸のアイコンを選択。
![QUIITA1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/471681/

元記事を表示

【図解】コンフュギュレーション空間を用いた動作計画【Pythonコード付】

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2030125/cc51416f-ff92-65d6-06b3-65b3f8197862.png)

:::note
こちらの記事は,[ロボティクスの辞書的な記事(にしたい記事)](https://qiita.com/akinami/items/eb0741b0d9c322e5d5ec)のコンテンツです.
:::

– 事前に必要な知識(見ておいた方がいい記事)
– [動作計画【概要】](https://qiita.com/akinami/items/5ce64a50b53863fc0990)
– [タスク空間におけるロボットアームの動作計画](https://qiita.com/akinami/items/6f012ebab6b433db76d5)

お疲れ様です。秋並です。

今回は、ロボットアームの動作計画の中でも

– コンフュギュレーション空間を用いた動作計画

について解説します。

元記事を表示

Polars の基礎概念を理解する

:::note warn
この記事は、Python Polars 1.5 のドキュメントを元に作成しています。
Polars は比較的若いライブラリのため、API や実装は短期間のうちに変更される可能性があります。
:::

# Polars の基礎概念を理解したい

Polars は、高速で洗練された DataFrame のためのライブラリです。従来より Python では、 DataFrame のためのライブラリとして Pandas がよく使われていますが、近年は徐々に Polars の人気も高まっており、名前を聞いたり解説記事を見ることも多くなってきました。

Polars は、Pandas とのコードの互換性を目指しているわけではなく、異なる思想の上で設計されています。Polars の現代的な設計思想は、Polars の大きな魅力のひとつですが、一方で、初学者にとってのとっつきづらさの一因とも言えるでしょう。

「Pandas でやっていた、この処理は、 Polars でどう書くの?」を説明している記事は数多くあります。また、ChatGPT を初めとする LLM も、 Pola

元記事を表示

uv へ移行 from pyenv & poetry (docker前提)

# この記事の目的

現在、私の管理するpython project は pyenv & poetry を前提としているが、 `uv` がPython自体のversion管理も可能となったため、うまくいかなかった点もあわせて移行の記録をここに残していくこととする。

## Disclaimer
この記事の内容は、私個人の意見や見解であり、私が所属する組織の公式な立場、方針、意見を反映するものではありません。この記事の内容について、組織はいかなる責任も負いません。

## このタイミングの理由

uv 0.4.0 が 2024-08-30 に公開された。この version から project を [Application と Library を区別](https://docs.astral.sh/uv/concepts/projects/)するようになったことが、自分の Application の利用として Python repository の管理にフィットするからではないからと感じたことから調査を始めた。ちょうど良いタイミングで uv 0.4.1 から `uv export —

元記事を表示

【Python入門】list,tuple,dict,rangeからのデータ抽出方法について

# はじめに
Pythonではシーケンス型というものが存在します。他プログラミング言語でいうところの配列と同等となります。
配列系であれば[共通のシーケンス演算](https://docs.python.org/ja/3/library/stdtypes.html#common-sequence-operations)がサポートされています。

# データ検索のサンプル
例えばJava等のプログラミング言語であればリストの要素数ループすることで要素を取得し比較する必要がありますが、pythonでは“`x in s“`演算を用いて簡潔に記載できます。
javaとPythonのコードについては同じ意味になります。とても簡単ですよね。

“`java:java
for ( Integer number : numbers ) {
if ( number == 2 )
return true;
}
}
return false;
“`

“`python:python
2 in numbers
“`

もちろんディクショナリ型でも使用可能です。
`

元記事を表示

Python httpsサーバーとWiresharkでのTLS復号

# PythonでのhttpsサーバーとWiresharkによるTLS復号化
もともとはWiresharkで暗号化データを見たいというところからスタートし、そのためには、簡単にhttpsサーバーを構築したい、ついでにPythonにて作成で、、、ということなった。調べると下記内容の単なる組み合わせで済んだが、備忘録として記録に残す。
– [Python Tips: Python で https サーバーを動かしたい](https://www.lifewithpython.com/2021/03/python-https-server.html)
– [MacOsのWiresharkでHTTPトラフィックを見る方法  How to decode TLS traffic on Wireshark](https://qiita.com/takamon9/items/4325a3f129c28b4221d1)

## Pythonでのhttpsサーバー
上述リンク先のコードとほぼ同じ。
“`python:server.py
import ssl
from http.server impor

元記事を表示

結晶構造のcifデータから非対称要素だけの原子座標を抽出してみたよ

# 結晶構造の非対称要素
結晶中では原子や分子は規則正しく配列しています。この配列の最小の繰り返し単位が結晶構造です。結晶構造はほとんどの場合(空間群が$P_1$以外)何かしらの対称性があります。結晶構造に含まれる原子や分子はその対称性によって関係づけることができます。ここで、結晶構造の対称性によって関係づけることのできない最小の要素を非対称要素と言います。アスピリンの有機結晶を例に見てみます[^1]。結晶構造中にはアスピリンの分子が四つありますが、このうち一つのアスピリンの分子の座標が分かれば、他の三つの分子の座標は、結晶格子の対称性によって一義的に定まります。つまりアスピリンの有機結晶の非対称要素は一分子のアスピリンということになります。

![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2804113/6741f43a-38ca-4667-b26d-3e7d1a1f0a6c.png)

非対称要素と結晶の対称性が分かれば結晶構造の全体がわかるので、国際的な結晶構造のデータのフォーマット

元記事を表示

GBBINFO-JPNの設計図

2021年から運用しているWebサイト[「GBBINFO-JPN」](https://gbbinfo-jpn.onrender.com)について、最近他人に説明する機会が増えたので、目的や歴史、設計思想を書き起こしてみた。

https://gbbinfo-jpn.onrender.com

想定読者はエンジニアの方です
(採用担当の方、ご覧いただきありがとうございます。ぜひ「設計思想」の項目を見てください)

Beatboxファンの人は何言ってるかわからない部分が多いと思う。sry

# GBBINFO-JPNとは
GBBINFO-JPNは、**Human Beatbox 世界大会 “Grand Beatbox Battle” の非公式情報サイト** を名乗っている。
Beatboxってなんだ?と思ったら HIKAKIN でググってください。ブンブンハローYouTube

:::note info
Grand Beatbox Battle 略してGBBは、Swissbeatboxっていう会社(団体?)が毎年開いているHuman Beatbox 世界大会。
GBBといえば、[多分この

元記事を表示

プライベートリポジトリをpoetry addするときに詰まったこと

# 概要
pythonパッケージにしたプライベートリポジトリをpoetry addするときに細かいことで詰まったのでメモ(共有)
(普通にgit cloneできるような鍵登録などはした状態)

# 内容
誤って以下にしていた
“`bash
poetry add git+git+ssh://git@github.com:DarekanoKaisha/RepoJitori.git@main
“`

正しくは以下
“`bash
poetry add git+git+ssh://git@github.com/DarekanoKaisha/RepoJitori.git@main
“`

# 感想
なかなか気づかなかった。だってエラーが
“`
DarekanoKaisha/RepoJitori.git@main is not a valid repository name
Visit https://support.github.com/ for help
“`
なんだもん

(仮想のレポジトリです)

元記事を表示

Python初心者がSARIMAモデルで株価予測をやってみる

# 目次
・はじめに
・本記事の概要
・プログラム
・おわりに

## はじめに
このブログは、通信講座の受講終了要件を満たすためのものです。

【自己紹介】

37歳女。
営業事務や士業のアシスタントとして仕事をしてきましたが、
海外生活の経験からずっと、専門職・手に職というものに憧れていました。
子供が保育園に入るのを機に、最後の学習チャンスだと思い、
以前から興味があったPythonに挑戦しました。

****

## 本記事の概要
自分の学習の理解度の確認を主に、
Pythonの学習をしている初心者にも、わかりやすいことを心がけています。
SARIMAモデルを用いて日経平均の株価予測をしていきます。

**実行環境**
Google Colaboratory (Google Colab)
Python 3.10.12

## プログラム作成開始!!
### SARIMAモデルとは
とても簡単に言うと、季節性の影響を組み込んだ過去のデータに基づいて、未来の値を予測するコードのことです。

### プログラムの流れ概要
①データ

元記事を表示

Python 深掘り: イテラブル、イテレータ、ジェネレータの活用

## はじめに
Pythonのイテラブル、イテレータ、ジェネレータは、初心者から中級者へのステップアップに欠かせない概念です。本記事では、これらの基本的な理解を踏まえた上で、より高度な使用方法や最適化テクニック、さらには実際のプロジェクトでの応用例を紹介します。各セクションには実行例を含め、コードの動作をより具体的に理解できるようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/2a9094a8-6230-68ac-5248-83da85c20f95.png)

## 1. イテラブルの高度な操作

### 1.1 イテラブルの連結と展開

`itertools.chain()`を使用して複数のイテラブルを効率的に連結できます。

“`python
from itertools import chain

list1 = [1, 2, 3]
list2 = [4, 5, 6]
tuple1 = (7, 8, 9)

print(“連結されたイテラブル:”)

元記事を表示

OTHERカテゴリの最新記事