Python関連のことを調べてみた2022年11月25日

Python関連のことを調べてみた2022年11月25日
目次

Running BLOOM 176B inference on ABCI

With evergrowing size of recent pretrained language models (or *foundation models*), running *inference* of these models poses [many challenges](https://huggingface.co/blog/bloom-inference-optimization). In this post, I will explain steps needed to run GPT-3 sized models (e.g., [BLOOM](https://bigscience.huggingface.co/blog/bloom)) with a single 8xA100 (40GB) machine on [ABCI](https://abci.ai/) using [Huggingface inference server](https://github.com/huggingface/transformers-bloom-inference), [De

元記事を表示

「平面直角座標への換算」(国土地理院)のoutファイルからPythonでDXF作図する

国土地理院さんの「平面直角座標への換算」
https://vldb.gsi.go.jp/sokuchi/surveycalc/surveycalc/bl2xyf.html
↑で一括計算すると作成されるoutファイルからCADに一気に作図(円をプロット)するプログラムを書きました。

10個程度の座標であれば手入力でも良いでしょうが、50個100個となると入力ミスも増えてストレスが溜まるものだと思います。
私の直近で行った業務では約17000個の座標入力が必要であり、仮に1個の入力で10秒かかるとしても170000秒(約47時間)、8時間勤務だとしても5日で終わらない量のデータを取り扱う必要がありました。
数週間前に作成したプログラムが予想以上に便利だったので、皆さまにも使って頂きたいと思い記事にしました。

※データ量が10億個以下であれば1秒程度で作図が完了します。
※Windowsでの使用を想定していますが、Mac,Linuxでも動作確認済みです。(コマンドが若干異なります…)

導入
—————————————
1.Pyth

元記事を表示

画像処理を使った球状黒鉛鋳鉄(FCD)の黒鉛球状化率の測定(新旧規格の比較)

# はじめに
今年(2022年)4月にJIS G5502 球状黒鉛鋳鉄品が改正されました。ここでは、改正前(G5502-2007)を旧規格、改正後(G5502-2022)を新規格と呼ぶことにします。これらの規格において、組織画像から画像処理によって黒鉛球状化率を測定する方法として、次のものが規定されています。なお、詳しい測定方法について知りたい方はJIS等でご確認ください。

## 新規格
JIS法:JIS G5505-2020 CV黒鉛鋳鉄品 と同じ方法です。

ISO法:次の①、②の方法があります。
①ISO945-1の黒鉛形状区分のタイプⅥおよびⅤに分類される黒鉛の全面積を、全黒鉛の面積で割って求める方法
②丸み係数が0.6以上の黒鉛の面積を、全黒鉛粒子の面積で割って求める方法

## 旧規格
組織写真等から黒鉛球状化率を測定する方法と同様な方法で行うと規定されています(画像処理の方法は規定されていません)。なお、組織写真等から球状化率を測定するには、旧規格の「黒鉛粒の形状分類図」のⅤとⅥの黒鉛数を、全黒鉛数で割って求めます。

## 新旧規格の球状化率の比較
同じ画像を用いて、

元記事を表示

Pythonで中学 文字式の計算

Pythonで中学の「文字式の計算」をする方法を紹介します。

## はじめに

Pythonがインストールしてあることが前提です。

また、ターミナルなどでファイルの実行結果を出力できることが前提です。

なお、Pythonでの基本的な計算方法を知っておく必要があります。
こちらの記事を参考にしてください。

https://qiita.com/akiba_burari/items/5bb4c083b30768a33aa1

## 必要なもの

Pythonが使えるデバイス。
パソコン、ラズパイ、タブレット、スマホなど。

※自分はChromebookのLinuxを使っています。

## sympyをインストールする

まずはじめに、代数計算のためのPythonライブラリ「sympy」をインストールします。

最新版をインストールしましょう。
“`
pip3 install sympy==1.9
“`
sympyをインストールするには、Pythonがすでにインストールされていることが前提です。
インストールできない人は以下の方法でインストールできるかもしれません。
“`
sud

元記事を表示

Google map APIを使って自動で地図画像に指定した住所をプロットできるようにした

# はじめに
### 作成の背景
アルバイト先で非常にめんどくさい資料作成を頼まれた際に、なんとか自動化できないかなと今年の8月ごろに作ってみたものです。
依頼された資料は、ある施設を中心に約100人分の所在地がプロットされた地図をそれぞれ異なる4枚作るというものでした。

### 完成イメージ

業務で使っているデータは公開できないので、大学の周りを中心として好きな飲食店をプロットした地図を代わりに作成してみました!業務に使っているものと縮尺を変えていないので、中心に集まってしまっていますが、このような地図ができるイメージです!
![テスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2893106/a8b169a9-a049-d9ee-1c41-a14208f98e95.png)

# 環境
MacOS Moterey
Python 3.10.3
googlemaps 4.7.3

# 実装

まずは、中心座標を得るためにキーワードをもとに緯度経度を取得します。

“`python
def g

元記事を表示

Django新しいアプリケーションの作成方法

Djangoには新しいアプリケーションを作成するときの雛形が用意されている。
それを用いて、アプリケーションのディレクトリーを作成し、URLディスパッチを出来るようにするところまでをまとめる。

まず、Djangoのある仮想環境へ移動する。ターミナルやコマンドプロンプト(cmp)で実行する。
Anacondaを使用している場合は、以下の方法を用いる。

“`
#仮想環境の構築
conda create -n djangoenv python=3.10 #djangoenvは仮想環境名、pythonのバージョン指定がなければ記入は不要。
#仮想環境の有効化
conda activate djangoenv#仮想環境名
#仮想環境の無効化
conda deactivate
#作成した仮想環境の一覧
conda env list
#作成した仮想環境の削除
conda remove -n djangoenv –all #djangoenvは仮想環境名
“`

そして、Djangoの実行できる環境を有効化したら、以下のコマンドでアプリケーションの雛形を作成する。
“`
django-a

元記事を表示

Python で計算する準備 足し算・引き算・掛け算・割り算・分数・累乗

Python で計算するために必要なことをまとめてみました。

準備として「足し算」・「引き算」・「掛け算」・「割り算」・「分数」・「累乗」の書き表し方を紹介していきます。

## 足し算

足し算はこのように計算します。

### print(a + b)

“`
#a=5
#b=10
print(5 + 10)
#出力結果は「15」
“`

## 引き算

引き算はこのように計算します。
### print(a-b)
“`
#a=10
#b=5

print(10 – 5)
# 出力結果は「5」
“`

## 掛け算

掛け算はこのように計算します。
### print(a * b)

“`
#a=5
#b=10

print(5 * 10)
# 出力結果は「50」
“`

## 割り算

割り算はこのように計算します。
### print(a / b)
“`
#a=10
#b=5

print(10 / 5)
#出力結果は「2」
“`

## 分数の書き表し方

分数はこのように書き表します。

### 分子 / 分母

2分の5
“`
5

元記事を表示

GitHub API ✖️Flaskを使ったアプリ完成までの道のり

https://qiita.com/sasao-genmaicha/items/13ec0250f875f1abdac1

前回の記事?でAPI取得からどうやってコードに落とし込むかを紹介しました。
今回はそのAPIをPythonでどう処理したのかを解説したいと思います。

“`python:app.py
from flask import Flask, render_template
import git

app = Flask(__name__)

@app.route(‘/’)
def scraping_api():
return render_template(‘index.html’)

@app.route(‘/results’, methods=[‘POST’])
def do_scraping():
results = git.git_api()
return render_template(‘results.html’, results=results)

if __name__ == (‘__main__’):
app.run

元記事を表示

2022 FIFAワールドカップ、日本が決勝トーナメントに進出できる確率(2022年11月23日時点)

## はじめに
まず、この記事を書く前に、2022年11月23日にカタール、ハリーファ国際スタジアムで行われた、ドイツ 対 日本、日本がドイツに、2対1で勝ったことにより、決勝トーナメントに進出できる確率がグッと大きくなりました。
さて、2022年11月23日時点での、日本の決勝トーナメントに進出できる確率はどのくらいか計算してみることにしました。以前投稿した[2022 FIFAワールドカップ、日本がワールドカップに出場できる確率(2022年2月2日時点)](https://qiita.com/eclipse-hunter-usa/items/b80646e46b5761c5a84d)はこちら。
まずは、2022 FIFAワールドカップ、グループEの2022年11月23日時点の勝ち点を下記に示します。

## 2022 FIFAワールドカップ、グループEの勝ち点表

| |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|スペイン|1|1|0|0|7|0|+7|3|
|日本|1|1|

元記事を表示

「ご注文はこちらの物件ですか?」アプリを作ってみた。

こちらの記事をご覧いただきありがとうございます。
~~「ご注文はうさぎですか?」も絶対古いよな…?~~
~~ちなみに私はごちうさのアニメを全く見たことないです。~~

SUUMOの物件情報について機械学習モデルを使っていろいろ調べていました。
前回の「うわっ…理想の賃貸、相場高すぎ…?」に続いて、物件の条件を入力すると似たような物件を探してきてくれるアプリを作りました。
アプリ開発についてはまだまだ勉強中なので大したものではありませんが、ぜひ使ってみてください。

※heroku有料化に伴い、11日25日にはherokuからアプリを削除します。いずれAWSとかで再現する予定です…。
※なにかのミスで、 __間取りの条件によってはエラーが出てしまいます…__ 。「Internal Server Error」の表示が出たらブラウザの戻るボタンを押して戻ってください。
~~デプロイしてから気が付きました。ちゃんとデバッグして~~

# 「ご注文はこちらの物件ですか?」アプリの概要

↓のurlから利用できます。

https://predict-rent-tomyu.herokuapp.co

元記事を表示

統計的な有意差を示すグラフ(ブラケットとテキスト)をMatplotlibで描画する。

# 概要
統計的な有意差を示すためのブラケットとテキストを描画するパッケージを作りました。そのときに工夫した点を備忘録的に残しています。
下図の描画をMatplotlibと自作パッケージの関数を使って行うことができるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/250271/5d5d2ce8-c553-a350-3c7f-877f30e4e009.png)

PyPIにもPublishしたので、pip installして使えるかと思います。

https://pypi.org/project/vistats/

https://github.com/takato86/vistats

# 背景
統計的検定の結果を示すために棒グラフと該当ラベルの棒グラフ間をブラケットで囲み、その上にテキストを記述することが多くあります。
水準数が少なかったり、作成の機会が少ない場合はPowerPointなどで追加する方法で十分かと思いますが、多くなった場合に非常に手間です。
その問題

元記事を表示

ゼロつく2でValueErrorが出た時の対処法

【自然言語処理】Deep Learningを使ってアンジャッシュ渡部のAIを作る【RNN】
を参考に日本語の文章生成を試みた際、コーパスの大きさでValueErrorエラーが発生しました。

# エラー文

“`
ValueError: could not broadcast input array from shape (1653,100) into shape (10000,650)
“`

# 解決法
動かしているファイルは、generate_better_text.pyだが、エラーに対応する数字が変えられるのは、better_rnnlm.py。 

better_rnnlm.pyの18-19行目を見てください。
“`
def __init__(self, vocab_size=10000, wordvec_size=650,
hidden_size=650, dropout_ratio=0.5):
`

元記事を表示

Pythonのclickを使って業務効率化するCLIを作った

# はじめに
アルバイト先で行うメールの開封データの定期的な集計を、私以外のメンバーでも簡単に触れるようにコマンドラインから実行できるようにしました!

# 動作環境
MacOS Monterey
python 3.10.6
click 8.1.3

# 実装
全体のコードはこんな感じです。

“`python

import click
import time

from module.output import usual_open_ratio, usual_click_ratio

@click.group()
def cli():
pass

@cli.command()
@click.option(“–open_ratio”, prompt=”開封率を出力しますか?[y/N]”, type=bool)
@click.option(“–click_ratio”, prompt=”反応率を出力しますか?[y/N]”, type=bool)
def usual_analyze(open_ratio, click_ratio):
if open_ratio:

元記事を表示

LeetCode解答備忘録 No.1~3

# はじめに

 就活用にLeetCodeを始めたのですが、AtCoderやTechFULをしているだけでは関わらない知識が多く、難しいと感じました。
 備忘録 兼 これから始める方々のお役にたてればよいと思い記事にすることにしました。

※解答例は Python3 です
※解答例でACは出ましたが、最適解かどうかはわかりません。参考程度にご覧ください


# 問題1. Two Sum
**題名** : Two Sum
**難易度** : Easy
**系統** : 全探索
**概要** : int配列(nums)中の2つの要素を足して、int変数(target)と一致する2つの要素の添字を返す
**制約(3つ)*

元記事を表示

Pythonでエラー:error: (-5:Bad argument) in function ‘inRange’

# 前提
Pythonで画像編集処理を行っていた際にぶつかったエラーになります。非常に初歩的なものですが少し悩んでしまったので自分用に投稿。

エラー内容は下記。

“`:python
OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function ‘inRange’
> Overload resolution failed:
> – src is not a numpy array, neither a scalar
> – Expected Ptr for argument ‘src’
“`

# 実現したいこと

`cv2`モジュールの`inRange`メソッドを用いて、読み込んだ画像を色で閾値を設けて処理したい。コードがこれ。

“`python:
# 抽出関数を定義
def ext(img_bw_func, bgrt_obj_func) :
# 0以下、255以上の値が出ないように処理
minbgr = []
maxbgr = []
for i in range(0

元記事を表示

Azure CLIでのKey Vault シークレットキー作成 〜 Azure Functions(Python)でシークレットキーの取得・表示

<前提条件>
・KeyVaultは作成済み

# 手順1:Azure CLIコマンドでAzureにログイン

“`
az login
“`

# 手順2:Azure CLIコマンドでシークレットキーを作成する

“`
az keyvault secret set –vault-name “KeyVaultのコンテナ名” –name “シークレットキー名” –value “シークレット値”
“`

# 手順3:Azure CLIコマンドで作成したシークレットキーを表示

“`
az keyvault secret list –vault-name “KeyVaultのコンテナ名”
“`

“`
# 出力結果 
[
{
“attributes”: {
“created”: “〇〇”,
“enabled”: 〇〇,
“expires”: 〇〇,
“notBefore”: 〇〇,
“recoveryLevel”: “〇〇”,
“updated”: “〇〇”
},
“cont

元記事を表示

いくつかの言語での全角スペースの挙動

## 最初に

言語によって、全角スペースが混入したときの挙動が違います。

各言語によって、どのような違いがあるのだろうかと思い、簡単に調べてみました。

### Python・Javaは、検知してエラー

全角スペースが混じってるだけで、それを検知しエラーとして教えてくれました。

– Python(3.8.2)は、`SyntaxError: invalid character in identifier`と表示。
– Java(openjdk 15)は、`error: illegal character: ‘\u3000’`と表示。

Javaは文字コードまで教えてくれるので、親切ですね。

### Rubyは、変数名に扱えてしまう

Rubyでは、日本語も変数名に使うことができ、全角スペースも変数名に使えてしまいます。

“`fullwidth_space.ruby
  = “Hello, world!”
p   # “Hello, world!”
“`

上記のコードは、全角スペースに文字列を代入して出力してます。

そういうわけで、もし全角スペースが混じってもそれを検知

元記事を表示

[Django]データ作成・保存時に処理させるSignalを使う[django.dispatch.receiver]

# django.dispatch.receiver()の使い方
特定のテーブルのデータが変更されたらログ出したい時とかありますね。
簡単な例としては、商品情報を変更した場合のみログを出したいとか。
そんな時に使えるのがsignal!

https://docs.djangoproject.com/en/4.1/_modules/django/dispatch/dispatcher/

>Django includes a “signal dispatcher” which helps decoupled applications get notified when actions occur elsewhere in the framework. In a nutshell, signals allow certain senders to notify a set of receivers that some action has taken place. They’re especially useful when many pieces of code may be inter

元記事を表示

歌詞付きMIDIをMusicXMLに変換 その1: 歌詞情報の取得

# 概要
歌詞付きMIDI(XFフォーマット)をNEUTRINOに入力可能なMusicXMLに変換することを試みます。
第一歩として、まずはMIDIから歌詞情報を取得してみました。

結論だけ先に述べておくと、以下のコードで歌詞らしきものを抽出することができました。

“`Python
import mido
from mido.midifiles.midifiles import *
from mido.midifiles.midifiles import _dbg
from mido.midifiles.meta import meta_charset, _charset

class XFMidiFile(mido.MidiFile):
# override
def _load(self, infile):
if self.debug:
infile = DebugFileWrapper(infile)

with meta_charset(self.charset):
if sel

元記事を表示

VSCodeからPythonソースを対話的に実行

Jupyter Notebookでも利用しているiPythonを用いて、生のPythonソース上でも対話的に実行する機能が提供されています。

# 準備
– VScodeに拡張機能「Python」をインストール

# 実行
Pythonのサンプルソース
“`python
#%%
# セル1
print(“output 1”)

#%%
# セル2
print(“output 2”)
“`

上記ソースでは、2つのprint文それぞれの直上で、「#%%」を記述しています。
Python Interactiveでは、「#%%」の間が、Jupyter notebookでのセルにあたります。
このソースをVSCode上に入力しているとき、次のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586693/97239999-edd6-dd84-5875-5a113d31796e.png)

「#%%」の上に「セルの実行」「以下を実行」「[デバッグ]セルに移動」「[1]に移動

元記事を表示

OTHERカテゴリの最新記事