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

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

【TorchData】PyTorch 1.11と合わせて公開されたTorchDataをとりあえず使ってみる

最近PyTorch 1.11がリリースされました.それに合わせて以下のようにトップページにデカデカと **TorchDataが使えるようになった** と宣伝されています.

![Screenshot from 2022-03-20 10-31-43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/627793/34e51502-f5c3-f56c-292c-be1f9fc02e19.png)

TorchDataは PyTorch 1.11のリリース前から[pytorch/data](https://github.com/pytorch/data)で開発されていて,リリースタイミングを合わせたようです(ただしまだベータ版).
READMEには,以下のように書かれており,PyTorchのDatasetをTorchDataのDataPipesで置き換えられるような感じがします.

> torchdata は、柔軟でパフォーマンスの高いデータパイプラインを簡単に構築するための、共通のモジュラーデータローディン

元記事を表示

Microsoftのデータサイエンス初心者向けコースをやってみるDay2チャレンジ:データ処理 – Pandas❶

# はじめに

 GAFAM(Google, Amazon, Facebook, Apple, Microsoft)のMは何と言ってもMicrosoft。
ビルゲイツ氏の時代はOSのイメージが強かったが、サティアナデラ氏がCEOの現在は、クラウドでイケイケの会社となっており、超ハイスキルの人財を多数抱え、世界最先端で人工知能・データサイエンス・機械学習を学べるコースを無償で提供している。そこで、Microsoftの寛大さに感謝しつつ、Pythonを使いながら、データサイエンスを勉強してみる。

# 対象読者

 Pythonとデータサイエンスに興味があって、英語が苦手な人(英語が得意な人は、[参考文献](#参考文献)を直接解いてください。

# ロードマップ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409610/4ed71512-7f95-9773-3b18-6fcc92186fae.png)

https://github.com/microsoft/Data-Science

元記事を表示

Python ループ処理させたい関数が複数あるときのテクニック

以下のように第一引数にループさせたい関数を、第二引数に前処理したい関数を指定するwrapper関数を作成して、マルチスレッドでtargetを指定する前にwrapして使ったりしています。

# 無限ループさせる例

“`python
import time

def wrap_loop_func(main_func: any, preprocessing_func: any = None):
“””関数をループさせる関数を返す”””
def loop_func():
if preprocessing_func:
preprocessing_func()
while True:
main_func()
return loop_func

def task():
print(‘task’)
time.sleep(1)

def preprocessing():
print(‘pre-processing has done.’)

# loop_task

元記事を表示

日記;回すだけIII ⑩ pythonでSDO、PDOの読み書き<その5 Profile Position Mode + ディジタル入出力(EPOS4)>ベータ版

 EPOS4のコントローラには、
– ディジタル入力4ポート、出力2ポート
– アナログ入力2ポート、出力2ポート

が用意されています。オブジェクト・ディレクトリに登録されているので、SDOで読み書きできます。
### ディジタル入出力
 コネクタX7 Digital I/Oのピン番号と機能です。
1 white : Digital input 1 ; Logic 0 <0.8 V Logic 1 >2.0 V 、22k pulldown
2 brown : Digital input 2
3 green : Digital input 3
4 yellow : Digital input 4
5 grey : Digital output 1 ; 2.2k pullup to 5.45V MOS FET Drain-GND 、sink 0.5A max 36V
6 pink : Digital output 2 ; Souce <2mA 7 blue : GND 8 red : VAux Auxiliary output voltage (+5 VD

元記事を表示

Python LU分解で連立一次方程式を解く

## 問題
$N$次元の正方行列$A$と列ベクトル$B$, $X$について、$AX=B$を$X$について解きたい。

“`math
\begin{pmatrix}
a_{11} & a_{12} & \dots & a_{1N} \\
a_{21} & a_{22} & \dots & a_{2N} \\
\vdots & \vdots & \ddots & \vdots \\
a_{N1} & a_{N2} & \dots & a_{NN}
\end{pmatrix}
\begin{pmatrix}
x_{1}\\
x_{2}\\
\vdots \\
x_{N}
\end{pmatrix}
=
\begin{pmatrix}
b_{1}\\
b_{2}\\
\vdots \\
b_{N}
\end{pmatrix}
“`

## 方針
$A$を下三角行列$L$(**L**ower triangular matrix)と上三角行列(**U**pper triangular matrix)の積で表すことができれば、$A=LU$なので、$AX=B\iff LUX=B$となります。

元記事を表示

AtCoder 水色到達メモ

# 0. 使用言語
pypy3で基本提出してます。pypy3でTLEするときはpythonで提出してます。
(pypy3でTLEするときは、Decimal型や再帰関数を使うときなど。このときにpythonで提出してます)

# 1. ようやく到達

水色到達までものすごく時間かかりました。
緑まではすぐに行ったので、水色も行けるかと思ってたのですが、全然甘くなかったですね。
2020年3月28日から参加して、そこからほぼ毎週欠かさず参加しました。結果コンテスト参加回数117回。
毎週参加していたら、いつかは水色いけるだろうと思っていたのですが、
たまに水色行ったり、茶色になったりで、レートが上がったり下がったりの繰り返しで
1000~1100レート付近で往復してました。
2021年9月あたりで、一気に100レート溶かして、さすがに勉強しないと水色は無理だなと把握しました。
2021年10月付近から土日は数時間、平日は業務後数時間やり続けて毎日継続してました。
その結果、11月以降、緩やかではありますが、右肩上がりのレートになって、ようやく水色という感じです。
過去問1000問解けば、大

元記事を表示

Pythonのdataclassにおけるmetadata

# TL;DR
dataclassのmetadataを使うと、メンバ変数にメタ情報を付与できる。
メタ情報を付与することで、実装を簡略化できるケースがある。
※metadataはサードパーティー製用なので本来の意図とは違う可能性あり

# dataclasses(dataclass)とは
Python3.7から追加されたデータを格納するクラスを簡単に定義できる機能を提供するモジュールです。

こんな感じ
“`python
from dataclasses import dataclass

@dataclass
class Company:
“””
会社クラス
“””
name: str
address: str
average_age: int
description: str

if __name__ == “__main__”:
company = Company(name=”創屋”, address=”石川県白山市”, average_age=30, description=”創屋はAIの会社です”)
“`

元記事を表示

【PyBegi29 30分ハンズオン】Flaskで認証なしの簡易掲示板を爆速で作ってみる

# はじめに

この記事はPython Beginners沖縄というコミュニティの初心者向けPython勉強会のために作った資料ですが、せっかく作った資料をpcに眠らせるのはもったいないと思ったため一部修正・加筆したものを公開します。
ある程度初心者向けの内容を想定して、出来る限り専門用語を省きざっくりとした説明を書いていますが、もしわかりにくい箇所・もう少し別の言い方したほうがいいかもしれないどあればアドバイスいただけると助かります。

# 参考文献

大変参考にさせていだたきました。ありがとうございます。

PythonのFlaskでデータベースを利用する方法(Flask-SQLAlchemy)
https://note.com/junyaaa/n/n9eab953c73c9#zdJy9

Python+Flask環境をDockerで構築する
https://qiita.com/kai_kou/items/e78b546b9820c7d8f1f9

# そもそもPythonとは?
プログラミング言語の1つ。文法がシンプルで機械学習やデータ分析・webアプリ開発など幅広い分野で使え

元記事を表示

ColabでYOLOXの学習【Python】

# はじめに

Google Colaboratoryを使ってYOLOXの自前データでの学習を行います。自前のPCでYOLOXを学習しようとするとメモリ不足でできませんでした。。とりあえず学習できればいいやという突貫自分用メモです。

# データセットの準備

自作します。適当なアノテーションツールを使って[COCOフォーマット](https://qiita.com/harmegiddo/items/da131ae5bcddbbbde41f)でtrain用とvalidation用のjsonファイルをそれぞれ作成します。バウンディングボックスは[left,top,width,height]です。以下の例ではNumberPlateの検出のアノテーションをしています。

“`json:train.json
{
“images”: [
{
“id”: 0,
“width”: 768,
“height”: 1024,
“file_name”: “0-0058.jpg”,
“date_captured”: “2022-03-

元記事を表示

玉手箱の空欄推測問題をPythonで解いてみた 〜ソルバー編〜

# はじめに
玉手箱の空欄推測問題を解いてみたのソルバー編です.[前回](https://qiita.com/sekishoku/items/532e34981da9126b737e)までで問題を解く上で必要な値の取得までできているので,今回は実際に問題を解いていきます.

# 問題設定
空欄推測問題は以下のような問題で,テーブルの数値が二次元配列で与えられ,予測する値がNaNになっていることを想定しています.
tama.png

(https://jyosiki.com/spi/tama31_a.html より引用)

運賃を予測するので,運賃を目的変数,その他の値を説明変数とした線形回帰問題として解きます.数式で書くと
“`math
y_{運賃} = w_{フェリーの本数} \times x_{フェリーの本数

元記事を表示

玉手箱の空欄推測問題をPythonで解いてみた 〜文字認識編(pyocr)〜

# はじめに
玉手箱の空欄推測問題を解いてみたの文字認識編です.[前回](https://qiita.com/sekishoku/items/4d92856139d1a5a943ea)のGUI編で値の入力をするインターフェースは作りましたが,一々値を入力するのも面倒くさいので,どうせなら表を読み取って自動で値を入力するようにしてしまいます.

# 文字認識部分
Pythonには既に文字認識を行えるpyocrというライブラリが存在するので,それを使うことにしました.少しインストール手順が面倒くさいです.

インストールしてしまえば後は簡単で,ほんの数行で画像から文字列を抽出してくれます.pyocrに登録されているエンジンを使って,それに画像を与えるだけです.認識する言語も指定できlang引数で指定します.今回は日本語を想定しているので,jpnを与えています.
“`Python
import pyocr
from PIL import Image

engine = pyocr.get_available_tools()[0]
img = Image.open(‘test.png’)
t

元記事を表示

玉手箱の空欄推測問題をPythonで解いてみた 〜GUI編(Tkinter)〜

# はじめに
玉手箱の空欄推測問題を解いてみたのGUI編です.問題の値を入力し,結果を表示するためのインターフェースを作っていきます.

# 概観
完成予想図としては下のような感じになります.

実装にあたってPythonだとTkinterというライブラリがよさげだったので,それを使うことにしました.

# 前準備
まず,はじめにウインドウを作ります.これはほぼおまじないなので,定型文通りに作っています.
“`Python3
import tkinter as tk

root = tk.Tk()
root.title(‘solver’) # ウインドウのタイトル
root.geometry(‘550×260’) # ウィンドウの大きさ
root.resizable(width=False, height=False) # ウ

元記事を表示

玉手箱の空欄推測問題をPythonで解いてみた

# はじめに
就活を始めると大体の人が適性検査を受けることになりますが,Web上で受ける知能に関する検査は大きくSPIと玉手箱の2種類があると思います.そのうちの玉手箱には下の図のような表を読み取って,空欄に当てはまる値を予測させるという問題が出ます.

tama.png

(https://jyosiki.com/spi/tama31_a.html より引用)

この問題であれば,答えの選択肢として
① 495 ② 510 ③ 525 ④ 540 ⑤ 555
の5つがあります.ちなみに模範解答は②らしいです.

私はそこまで頭が良くないので,これらの知能テストがすこぶる苦手です.特にこの類推問題関連は難しすぎて「絶対に答えが一意に定まらないだろ」と発狂しながら解いていました.なので,面倒くさいことはPythonに

元記事を表示

Problem 100: 確率2分の1になる配合

* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

### 問題 100. 確率2分の1になる配合

原文 [Problem 100: Arranged probability](https://projecteuler.net/problem=100)

**問題の要約:合計n個の青と赤のディスクが入った箱からランダムに2枚取り出したときに青が2枚になる確率$P(BB)$がちょうど50%に$n>10^{12}$で初めてなるような青のディスクの枚数を求めよ**

ちょうど50%になる最初の2つの例は以下になります。

| ディスクの合計(n)| 青のディスク(b) |青が2枚になる確率$P (BB)$|
| :—-: | :—: | :—: |
| 21 | 15| $(15/21)×(14/20) \\ = 1/2$ |
| 120 | 85 | $(85/120

元記事を表示

VS Code + Anacondaのデバッグ環境 Windows10(2022年3月版)

# はじめに
VS Code+Anacondaでデバッグを行う記事が既にありますが、2022年3月現在では設定も非常に簡単になっていますので、ミニマムの手順を書いてみました。

# 1. 環境
“`
Windows: Windows 10 Pro バージョン21H2 ビルド19044.1586
Anaconda: 2021.11 (Navigator 2.1.1)
Visual Studio Code: 1.65.2
PowerShellでcondaコマンドが実行できるようにPATHが設定されています。
“`

# 2. [Anaconda](https://www.anaconda.com/products/individual#Downloads)のインストール
Anacondaのインストールは多数の解説がある為省略します。
上のAnacondaをクリックするとダウンロードリンクに飛びます

# 3. Python Extensionのインストール
左側にあるアクティビティーバーにある拡張機能のアイコンをクリック、または\[Ctrl\]+\[Shift\]+\[X\]でサイドバ

元記事を表示

日の入りで指定のコマンドを実行するPythonスクリプト

日の入りのタイミングで夕焼け小焼けを再生したかったが、
動的に `crontab` を書き換えるのも気持ち悪く、`at` コマンドも使えなかったので、
かわりにPythonで実装した記録。

# やりたいこと
`runat.py sunset play -q yuyakekoyake.mp3`
とすると、日の入りのタイミングで `play -q yuyakekoyake.mp3` を実行する。
あとは、このコマンドを`crontab`に正午くらいにでも放り込んでおけばよい。

# つまずき・実装のポイント
## argparse でコマンドを受け取る
引数解析はもちろん `argparse` にやらせるが、前述の例だと `-q` もオプション引数と認識されてしまい、`unrecognized arguments` エラーが出る。
これを回避するには、コマンドを受け取る `add_argument` メソッドに `nargs = argparse.REMAINDER` を指定する。
cf. https://docs.python.org/ja/3.7/library/argparse.h

元記事を表示

PythonとGraphillionで作るSnakeGameBot

# index[0] はじめに
私は、数学等を専攻していない(すべて趣味でやっている)者ですので、専門用語等のミスが多いと思います。
また、このプログラムを制作してから日がたっており、記事を書くのが初めてなので、説明に齟齬等があると思います。
どうか温かい目で見守ってください。(願望)

エミュレータ:ここ
Bot本体:まだ
# 1 制作したもの
引用の部分にある[GoogleのSnakeGame](https://www.google.com/fbx?fbx=snake_arcade)を始めに見てください。
コレ自体を操作するための技術は、私自身にはなかったので、まずエミュレータを、その次にBot本体を制作しました。
# 2 エミュレーター本体
~~~ python:SnakeGame.py
from random import randint

class Game:
“””SnakeGameの本体

Arrributes:
fx(int): 画面のx方向への大きさ
fy(int): 画面のy方向への大きさ

end

元記事を表示

郵便番号とその地域を取得するプログラムを作ってみた。

# 導入
現在Pythonを用いてスクレイピングを絶賛勉強しています。
そこで今回は[参考文献](#参考文献)にある本を使用して自分流にコードを書き換えて、「郵便番号とその地域を取得するプログラム」を作ってみました。

# コード
“`python:bs-zip.py
import re
from bs4 import BeautifulSoup
import urllib.request as req

#URLの取得
url = “http://api.aoikujira.com/zip/xml/”

i = 1
for i in range(50):
if(i < 10): #郵便番号が150-000Xのとき a = url + "150000" + str(i) res = req.urlopen(a) soup = BeautifulSoup(res, "html.parser") zip = soup.find("zip").string ken = soup.find("ken").

元記事を表示

ソケットを使おう!

# 目的

Webサーバーとクライアント間で通知したい。
その手法の1つに **Webソケット** があるが いきなり取り掛かるのは大変なので **ソケット** の説明をする。

この記事では Django は関係ない。

# はじめに

この連載の最初のページ: 📖 [DjangoをDockerコンテナへインストールしよう!](https://qiita.com/muzudho1/items/eb0df0ea604e1fd9cdae)

前提知識:

| Key | Value |
| ————————————————————– | ——–

元記事を表示

Pythonで振る舞いに関するデザインパターンを作成してみた

## 目次
[● Chain of Responsibility パターン](#-chain-of-responsibility-パターン)
[● Command パターン](#-command-パターン)
[● Interpreter パターン](#-interpreter-パターン)
[● Iterator パターン](#-iterator-パターン)
[● Mediator パターン](#-mediator-パターン)
[● Memento パターン](#-memento-パターン)
[● Observer パターン](#-observer-パターン)
[● State パターン](#-state-パターン)
[● Strategy パターン](#-strategy-パターン)
[● Template Method パターン](#-template-method-パターン)
[● Visitor パターン](#-visitor-パターン)
[その他のデザインパターン](#その他のデザインパターン)

##