Python関連のことを調べてみた2023年07月20日

Python関連のことを調べてみた2023年07月20日
目次

Fletで実践的なアプリ作成に向けて!セミナー運営サイトの設計・実装を進める

ここ1カ月くらい、**Flet**というFlutter × Pythonのライブラリを使った開発を最近しばしばやっていまして、QiitaでFlet関連の記事を数本投稿しています。

**公式サイト**

https://flet.dev/docs/

今回の記事は、以下の続きとなりますが、前回の内容は確認いただかなくても、読める内容だと思います!!前回は、[**Google認証と表示制御の機能**](https://qiita.com/eno49conan/items/a79b2a29fee08e249a27)を実装してみました。

さて、`設計`とタイトルに入れたことでハードルを感じる方が、いらっしゃるかもしれませんが、今回の場合、`設計`というとちょっと大袈裟では?と思っている部分もあります。**どんな機能をつけようかな~~、その機能をどうやって実装しようかな~~**と考える作業をしました!

今回は各画面の機能を実装してみました。題材としたのは「**セミナー運営サイト**」です。勉強会に参加された経験がある方はご存知かもしれませんが、conpassがその一例ですね。
(UIまで

元記事を表示

glTFを完全に理解したので、PythonでglTFを作成してみる

ごめんなさい調子に乗りました。ただチュートリアルを眺めて要点をまとめてみただけです。

– 参考
– https://github.com/KhronosGroup/glTF-Tutorials/blob/master/gltfTutorial/gltfTutorial_001_Introduction.md

## glTFとは

– 3Dスキャンのデータは一般に**OBJ・PLY・STL・FBX**などで保存される
– が、これらには**シーンの構造・レンダリングの方法**などは含まれない
– 点群データはいわゆる「表形式」であるため、点ごとの属性を持てるが、面に属性を持たせることを考慮している形式はほとんどない
– 3DモデリングツールのMayaは.ma、3ds Maxは.max、Blenderは.blendなどに**シーンの構造・ライトのセットアップ・カメラ・アニメーション・3Dオブジェクト本体**を保存できる
– が、これらは**専用のインポーター・ローダー・コンバーターを作成する必要**がある
– glTFはこれら含めた**3Dコンテンツ表現のための標準仕様**を定

元記事を表示

Azure OpenAI + Jupyter Notebookで自家製Code Interpreterを実現する

# はじめに
ChatGPT Code Interpreter いいですよね。でもAzure OpenAIではまだまだ使えなさそう(そもそも使えるようになるのか?)なので、Jupyter Notebookと組み合わせて同じようなことを実現してみました。
Function Callingが使えるようになれば、ちょっと実装を変えたほうがよいところもありますが、とりあえず生ChatGPTで進めます。gpt-35-turbo(0613)です。お安くできますね。

# 環境準備
Jupyter Notebookを使える環境はお好みの方法でご用意ください。
あと、openai、matplotlib, pandas, numpyとか必要なものもお好きな環境にどうぞ。なお、日本語でグラフを作成したいので、`japanize-matplotlib`はいれておいてください。

# Code Interpreterを実現する関数
Jupyter Notebookに以下の関数群を定義します。

“`python
import os
import openai
from dotenv import load_

元記事を表示

論文の勉強18 「DCGAN」

今更ながら生成モデルGANについての勉強です。
論文と構造が異なる部分がありますので、ご了承ください。
また、コード内のコメントはchatgptによるものです。

以下の論文について実装を行っていきます。

タイトル: UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS
https://arxiv.org/pdf/1511.06434.pdf

しばらくうまく学習できていなかったのですが、最終的に以下の本の構造を参考にしました。

https://www.amazon.co.jp/2021-2022%E5%B9%B4%E7%89%88-%E6%A8%99%E6%BA%96-%E5%8C%BB%E7%94%A8%E7%94%BB%E5%83%8F%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B

元記事を表示

「日本域気候予測データ―格子点データ」2km版の投影パラメータを同定する

## はじめに

気候予測データセット2022の「日本域気候予測データ2㎞版」格子点データをラスタ化する際の投影パラメータを同定しました。

前回に続き、「日本域気候予測データ―格子点データ」2㎞版の投影パラメータを同定します。

「日本域気候予測データ-格子点データ」2㎞版の入手とマップ化の記事はこちら。

https://cci-labo.hateblo.jp/entry/2023/07/13/092644

## モデル格子情報の入手

気候予測データセット(DS2022)から、日本域気候予測データのモデル格子情報を入手します。

ファイルは次の3つ。

+ cnst_2km.dat
+ cnst_2km.ctl
+ cnst_2km.csv

データの入手方法は以下を参考にしてください。

https://cci-labo.hateblo.jp/entry/2023/06/06/210638

## ctlファイルのPDEF情報

“`ctl:cnst_2km.ctl
DSET ^cnst_2km.dat
OPTIONS big_endian
title constant d

元記事を表示

Pytorchで2クラス分類問題を解く

# 概要
Pytorchで2クラス分類問題を解くプログラムをまとめます。
~~ChatGPTを使えば一発でそんなプログラムなんて出てくるのになんで今さら~~ とりあえずまとめていきましょう!

# 環境
– OS: MacOS 13.4.1
– DockerDesktop: 4.20.1
– in container
– OS: Ubuntu20.04
– torch: 1.12.1
– torchvision: 0.13.1

# 準備
## データセット
データは`Oxford Pets dataset`を使います。
以下のコマンドで、任意のディレクトリに保存します。
“`terminal
wget https://thor.robots.ox.ac.uk/~vgg/data/pets/images.tar.gz -P data/pets
tar -xzf data/pets/images.tar.gz -C data/pets
rm data/pets/images.tar.gz
“`
これで`./data/pets/`ディレクトリに37種類の犬または

元記事を表示

あ…ありのまま今起こったことを話すぜ! の続きを HuggingFace Transformers で予測するッ!

「あ…ありのまま今起こったことを話すぜ!」

何が起こったのか気になりますよね。その続きを、Hugging Face の Transformers で予測してみましょうというのが、今回の記事です。

# 必要なモジュールをインストール

“`python
!pip install transformers -U
!pip install –upgrade accelerate
!pip install sacremoses
“`

Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: transformers in /home/kotera/.local/lib/python3.10/site-packages (4.31.0)
Requirement already satisfied: filelock in /usr/local/lib/python3.10/site-package

元記事を表示

pytestで関数のモックと標準出力のテストをする

pytestはPythonでテストを書くのに人気なツールです。
今回はpytestで関数をモックする方法と標準出力をテストする方法をメモがてら記載していきます。

# 関数のモック
pytestでは`mocker`を使うことで関数をモックできます。

まずは`main.py`として`get_id()`関数を以下のように定義します。
“`python:main.py
from uuid import uuid4

def get_id():
id = uuid4()
return f”Your ID: {id}”
“`
このとき`uuid4()`は毎回ランダムな文字列を返します。
実行するたびに`id`部分が変わってしまうので、このままではテストをすることができません。

そこで以下のように`uuid4()`をモックすることができます。
`main.py`をテストする`test_main.py`を以下のように用意します。

“`python:test_main.py
from main import get_id

def test_get_id(mocker)

元記事を表示

Lama2のアプリ(申請不要)

Lama2はMicrosoftはMetaとの新た商用および研究目的の規模言語モデルです。
利用してみたいは申請が必要です。

モデルのダウンロード:
https://ai.meta.com/resources/models-and-libraries/llama-downloads/

申請したくない場合は下記のhuggingface spaceで試してください。

### Llama-2 7B Chat
https://huggingface.co/spaces/huggingface-projects/llama-2-7b-chat

### Llama-2 13B Chat
https://huggingface.co/spaces/huggingface-projects/llama-2-13b-chat

### Llama2 70B Chatbot
https://huggingface.co/spaces/ysharma/Explore_llamav2_with_TGI

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

元記事を表示

意外と「国土基本図図郭」のポリゴンを生成するライブラリがなかったのでPythonで作ってみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203944/3bfaf733-5835-be49-f7a7-ce53b2b76f5a.png)
([オープンナガサキ](https://opennagasaki.nerc.or.jp/)より)

## はじめに

先日、[長崎県全域の点群データが自由に使えるらしいからみんなで使っちゃおうぜ!?](https://qiita.com/nokonoko_1203/items/a8d58c12c31faf55a7f5)という記事を書きました!

長崎県全域の点群データが無料で使えるようになった!?という情報を最速でキャッチし、すぐにダウンロードしてCesiumJSで可視化してみましたーという記事だったのですが、ダウンロード出来る点群データは上記画像のような区画に分かれており、区画単位でダウンロード出来るようになっていました。

これは「国土基本図の図郭」と呼ばれるグリッドで、[平面直角座標系](https://www.gsi.go.jp/soku

元記事を表示

VSCodeでJupyter Notebookを使う

最近説明する機会が多いので書いておきます。

Jupiter Notebook自体はシステムにインストールしたPythonで動かせますが、Global環境を汚したくないので仮想環境(pipenv)で実行します。
pipenvは仮想環境を管理するためのパッケージです。
[Pipenv: Python Dev Workflow for Humans — pipenv 2023.7.12.dev0 documentation](https://pipenv.pypa.io/en/latest/)

## この記事でやること
– 仮想環境(pipenv)のインストール
– 仮想環境(pipenv)の作成
– Jupyterカーネルのインストール
– Jupyter Notebookファイルの実行

## 前提
– Python3のインストール
– インストール時にPATHの設定をチェックしておく
– VSCodeのインストール
– 以下の拡張機能をインストールしておく
– Python(https://marketplace.visualstudio.com/items

元記事を表示

TestClientを用いてFastAPIのテストをする

FastAPIはPythonで高速なAPIサーバーを立てられるので人気ですね。
今回はFastAPIでテストをする方法を試してみました。

# FastAPIとは

https://fastapi.tiangolo.com/ja/

FastAPIとはPythonでAPIサーバーを構築できるフレームワークで、以下の特徴があります。

– 軽量
– Pythonとしては高速
– Pythonに型定義を実装できる
– 非同期通信を簡単に実装できる

# FastAPI標準のテストツール: TestClient
https://fastapi.tiangolo.com/ja/tutorial/testing/

FastAPIで標準で用意されているテストツールに`TestClient`というものがあります。
これはテスト内でFastAPIで作ったAPIサーバーのクライアントとして振る舞うことができるものです。

例として以下の`main.py`があるとします。
“`python:main.py
from fastapi import FastAPI

app = FastAPI()

@

元記事を表示

playwrightデバッグのコツ

## codegenで生成

https://playwright.dev/python/docs/codegen-intro

詳しい説明は他の記事を参考いただきたく。
playwrightにはブラウザの操作からコード生成してくれる仕組みがあるので
まずこれでやりたい操作を作る。
八割九割出来上がるのでゼロから作るより遥かに楽。
残りの二割程度は手直しが必要。

“`
$ pip install playwright
$ playwright install
$ playwright codegen https://qiita.com/
“`

## スクリーンショットを取る

https://playwright.dev/python/docs/screenshots

Windowsで作ったあとLinuxに持っていき、うまく動かない原因は日本フォントが入っていないことでした。X関連のパッケージを入れておらず`Headless=True`の場合はスクリーンショットを撮ってみると一目瞭然です。

“`py
page.screenshot(path=”screenshot.p

元記事を表示

Pythonの venv 仮想環境内で環境変数を恒常的に設定する方法

# 問題提起
Pythonの venv 仮想環境を使って web開発を行っていると以下のように、ターミナルから環境変数にAPI Keyを登録することが多いかと思います。

“`:zsh
export API_KEY=”2urh932hf0efe43fof742jf…”
“`

しかしこのようにターミナルで設定するやり方は仮想環境の立ち上げのたびに、環境変数の参照が切れてしまう問題がよく発生します。僕は毎回めんどくさいと思いながら設定し直していました…

# 解決方法
**python-dotenv モジュールを使う**

以下の手順に従ってpython-dotenv を使って環境変数を設定することでvenv 仮想環境内で環境変数を恒常的に設定することができます。

1 . venv 仮想環境に python-dotenv をインストールします

“`
pip install python-dotenv
“`

2 . プロジェクトのルートディレクトリに .env ファイルを作成します。このファイルに環境変数を定義します

“`
touch .env
“`

3 .

元記事を表示

ターミナルでドーナッツを回そう!

# はじめに
回れ!ドーナッツ!

donaught.gif

## 概要
[Donut math: how donut.c works](https://www.a1k0n.net/2011/07/20/donut-math.html)を参考に、ターミナル上でドーナツを回すコードを、Pythonを使って書いてみました。
今回はこのコードの仕組みをブレークダウンして解説します。

(~~コンピュータグラフィックの基礎や、プログラミングにおける数学の大切さがわかるかもしれません。~~)

コードはこちら

“`python
import math
import time

window_width = 100
window_height = 10

元記事を表示

【Python】簡単OCR

# はじめに
PythonのOCRを調べると、Pyocrの記事がよく出てきます。しかし、世の中には色々な手法が存在します。
今回は、PyocrとeasyOCRの使い方を紹介していこうと思います。

PyocrとeasyOCRの違いをはじめに紹介します。
使用する状況によって使い分けることでより良い結果を得られます。
| ライブラリ | 特徴 |
|:———–:|:————:|
| Pyocr | 文章として見読み取ることに適しています。 |
| easyOCR | 画像内の単語を読み取ることに適しています。 |
### github
今回のコードはgithubに載せているのでわからなくなった場合は参考にしてください。

https://github.com/masa2122/Brief_AI_implementation_summary/tree/main/%E6%96%87%E5%AD%97%E8%AA%8D%E8%AD%98(OCR)

# Pyocr
PyocrはGoogleが開発したOCRエンジンを使用してOCRを行うライブラリです。

「pyth

元記事を表示

高校生エンジニアが解説!コンピューターサイエンスを学べる技術書5選

# はじめに
みなさん、こんにちは。公立高校に通いながら、放課後や休日はIT企業のエンジニアとして働いてる[Raio](https://twitter.com/Raio14f)です?

今回の記事では、コンピューターサイエンスが学べる技術書を5冊紹介します?
ご興味のある方は、是非最後まで読んでみてください!

↓筆者について↓

https://qiita.com/Raio14f/items/ef0fb67685b36298bcb0

# 技術書を無料で読む方法
KindleUnlimitedを使うことで、**沢山の技術書を無料で何冊でも読むことが可能です**?

– 200万冊以上の書籍が何冊でも読み放題
– 月額980円が今なら1ヶ月無料
– 場所に囚われず、様々な端末で使用可能

勿論、技術書以外にもビジネス書や漫画など種類豊富です!

**↓入会したい方は画像をクリック↓**
[![画像タイトル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1341254/39184240-343f-a756-e7e

元記事を表示

【Python】Pandasでデータを抽出する時、整数値が小数点になってしまう問題の解決方法3選

# 概要
とある大規模CSVデータから、特定のヘッダーの値を指定し、その値の行にある値を取得するサンプルコードを作成しました。Pandasを利用する際、整数値が自動で小数点表示になってしまう問題にも遭遇したのでその原因と解決方法も記します。

# 前提とサンプルコード解説
以下は、果物コードを参考にして果物の数量と価格の値を抽出するコードです。
CSVファイルに果物コード(`FRUIT_CODE`)、数量(`QUANTITY`)、価格(`SALES_AMOUNT`)のヘッダーと値がそれぞれある前提です。

“`py
import pandas as pd
import os
# CSVファイルのパス
csv_file_path = ‘/Users/xxx/Desktop/fruit_project/fruit_data.csv’
csv_encoding = “cp932” # エンコーディングを指定

# ヘッダーのリストを指定
headers = [‘QUANTITY’,’SALES_AMOUNT’]

# FRUIT_CODEの値を指定
target_fruit_codes

元記事を表示

Python 書き方その1

Pythonのプログラムの実行方法として、IDLEを利用する方法がある。
IDLEは、Pythonのインストール時に漏れなくついているツールです。

起動するとPythonシェルが起動するため、エンターキーで逐次実行が可能です。

IDLEで保存したファイルは、開いて、「RUN」タブから「RUN > MOJUL」を選択することで実行することができる。

PADでの実行も、Pythonスクリプトなので、書き方は同じはず。

元記事を表示

GeoPandasで空間結合を行い、ポリゴン内に含まれるポイントの属性情報をポリゴンの属性にカンマ区切りで付与する

# はじめに
PythonのGeoPandasライブラリは、地理空間データの操作を効率的に行えます。
ArcGISやQGISなどでデータ処理するより、高速(であることが多い)かつ履歴が残るため、私は好んで使用しています。
今回は、GeoPandasを使って以下の処理をしてみます。

– ①行政界ポリゴンと②学校ポイントを準備する
– 各行政界に存在する学校の名前を把握する
– ①行政界ポリゴンに新しく属性を追加し、対象の行政界に含まれる②学校の名前をカンマ区切りで入力する

使用したPythonとGeoPandasのバージョンは以下の通りです。
Python: 3.10.9
GeoPandas: 0.9.0

# データの準備
今回使用するデータは、[国土数値情報ダウンロードサイト](https://nlftp.mlit.go.jp/)から群馬県のデータをダウンロードして使用します。

– 行政区域データ
https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v3_1.html
– 学校データ
https://nlft

元記事を表示

OTHERカテゴリの最新記事