Python関連のことを調べてみた2021年09月14日

Python関連のことを調べてみた2021年09月14日

【Sphinx】索引(index)の日本語対応。用語(glossary)も日本語対応。

#1.はじめに
主に高校の数学と物理の復習を兼ねて、Sphinxで内容をまとめつつ学習しています。matplotlibディレクティブやmathディレクティブを使って楽しんでいます。

まとめた内容を横断的に俯瞰するためにindex, glossaryディレクティブが便利なんですが、例えば「微分」を例に取ると、索引ページ冒頭に「び」「ひ」と表示されて欲しいですよね。これが「微」と表示されてよろしくない。これをどうにかしたかった。

関連記事

– [【Sphinx】yogosyu(用語集)をSphinx4.1.2で使えるように修正する](https://qiita.com/koKekkoh/items/e7801c0e567c4f41dbe5)
– [【Sphinx】indexディレクティブからjindexディレクティブを作る](https://qiita.com/koKekkoh/items/e409b0fb4bf95a702675)

先ずは検索。「Sphinx 索引 日本語」と検索しました。

– [索引に載せたい | Sphinx-Users.jp](https://sphinx

元記事を表示

AtCoder Beginner Contest 216 バーチャル参戦記

# AtCoder Beginner Contest 216 バーチャル参戦記

58:40でABCDE完. 参加できてたらパフォ1486だった模様. レーティング上がってたな、惜しい.

## [ABC216A – Signed Difficulty](https://atcoder.jp/contests/abc216/tasks/abc216_a)

3分で突破. 書くだけ.

“`python
X, Y = map(int, open(0).read().split(‘.’))

if 0 <= Y <= 2: print('%d-' % X) elif 3 <= Y <= 6: print('%d' % X) elif 7 <= Y <= 9: print('%d+' % X) ``` ## [ABC216B - Same Name](https://atcoder.jp/contests/abc216/tasks/abc216_b) 3分半で突破. ダブりチェックと言えばセット. ```python N = int(input()) t =

元記事を表示

Pythonで結晶を描画するプログラムを作る~CIFデータの読み方と単位格子編~

投稿日:2021/09/14

# はじめに
VESTAなどの高性能なツールにより、後述するCIFデータさえ手に入れば空間群などの理解なしに材料の結晶構造が描画できてしまいます。本記事ではその便利さを一旦捨てて、ゼロから結晶を描画する事を目指します。

# 1. CIFデータ
CIFとはCrystallographic Information Fileの略でWPCI(Working Party on Crystallographic Information)が主導となって開発された結晶構造データを共有するデータフォーマットです。このCIFには基本的に以下の6つから構成されています[1]。
1. データ公表者および出版情報
2. 基礎結晶学的情報
3. 実験・解析方法の詳細
4. 得られた結晶データおよび結晶化学的情報
5. 解析時に使用したパラメータファイル
6. 解析に用いられたデータ本体
今すぐCIFデータを入手したいときはAtomWork (https://crystdb.nims.go.jp/index.html )かMaterials Project (https://ma

元記事を表示

ImageDataGeneratorを使ってみた

# はじめに
最近、深層学習の実装では`Pytorch`に浮気している自分ですが、TensorFlowの中のImageDataGeneratorについて改めて勉強したので、その記録です。

使い方がメインなので、モデル構築や学習は行いません。

# 環境
Anacondaの仮想環境を使用。

python 3.9.5
Tensorflow 2.5.0

# 使うデータ
Kaggle Datasetの[Intel Image Classification](https://www.kaggle.com/puneet6060/intel-image-classification)を使います。

{‘buildings’ -> 0,
‘forest’ -> 1,
‘glacier’ -> 2,
‘mountain’ -> 3,
‘sea’ -> 4,
‘street’ -> 5 }

の対応になっている6クラス分類です。

# 基本的な使い方

データのディレクトリ構造をとりあえず以下のように設定します。

> data/
├ seg_train/
│   ├ buildings

元記事を表示

スクレイピングの前提

#はじめに
スクレイピングによるアクセスが膨大だと、相手のサーバに大きな負荷を掛けることになります。 これが業務妨害に該当するとして、逮捕者が出た例もあります。 アクセスの頻度を抑え、相手サーバの負荷が過大にならないように注意しなければいけません。

#スクレイピングを始めるにあたって
スクレイピングの常識について少し触れていきましょう。
動画は3つあるので、この3つを見ていきましょう。

・ [スクレイピングとは?(動画)](https://youtu.be/PbQFVZTF-Bk)
・[スクレ

元記事を表示

【Python】ターミナル上でさっとカラーコード色を確認する方法

Pythonでターミナル上でさっとカラーコード色を確認したいな、と思うことがあったので対応ライブラリを探して試しに使ってみた。

# 利用ライブラリ

下記2つのライブラリを利用 (`pip install colour colr`)

– **[colr](https://github.com/vaab/colour)**
ターミナル上で文字を指定色で出力可能にするライブラリ
– **[colour](https://github.com/welbornprod/colr)**
色情報関連のユーティリティーライブラリ
(カラーコード変換、グラデーション色生成等)

# ターミナル上での色表示実行

colrライブラリの`color()`関数を利用することで、ターミナル上で色を表示できる。
`fore`引数指定で文字色、`back`引数指定で文字背景色を変更可能。

### 単純な表示方法確認

“`python:simple_color_demo.py
from colr import color

# 文字列で直接色指定
print(color(“hell

元記事を表示

ABC C – 1-SAT から学んだ

https://atcoder.jp/contests/abc187/tasks/abc187_c

![abc187_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/dafc3c38-e9ba-3f2e-81c0-27387d9f429c.png)

んー、何とかなりそうかも。

![abc187_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/d674b064-604d-24e4-f32e-54069297e333.png)

サクッと書いたが見事に TLE

“`SAT_rev1.py
from sys import exit
n = int(input())
lis = []
_lis = []

for _ in range(n):
s = input()
if s[0] == “!”:
_lis.append(s)
else:

元記事を表示

PyTorch の Define by Run を可視化

# Deep Learningフレームワークにおける計算グラフ

TensorFlow, PyTorchなどのDeep Learningフレームワークにおける計算グラフの構築方法が,大きく分けて2パターンに分類される。1つ目は Define by Run 型で,2つ目は Define and Run 型である。

## それぞれの特徴

#### Define by Run型
* Chainer, PyTorchがこちらの方式を採用している
* データを流すときに,計算グラフの構造を決定
* 動的な計算グラフを定義することが可能

#### Define and Run型
* TensorFlow(v1)がこの方式を採用している
* 計算グラフの構造を予め定義しておき,そこにデータを流す

## Define by Run が動的な計算グラフを構築できることを確認

#### 概要
* 入力データによって計算グラフが変化することを確認
* 本稿では,Recurrent Neural Net (RNN) を可視化
* torch_vizのmake_dot()を用いて,系列長が2と3

元記事を表示

AtCoder 218_d SetとListの違いの復習

# はじめに
– この記事は、以下の問題の復習記事です
– AtCoder 218_d Rectangle
– https://atcoder.jp/contests/abc218/tasks/abc218_d
– いつもの感覚でListで処理したらTLE、解説ACでSetで処理したら通るので、どのくらい違うのか疑問に思って調べました。

# ACのソースコード
– https://atcoder.jp/contests/abc218/submissions/25830932
– Setで実装するとAC
– いつもだとListでやりがち
– ○:p = set([tuple(input().split()) for _ in range(N)])
– ×:p = [(input().split()) for i in range(2000)]

# テスト用データセットと計測の条件
– 以下の2パターンとする
– Set ○:p = set([tuple(i, i) for i in range(2000)])
– Lis

元記事を表示

Pythonデータ分析の前処理でよく使うメソッド(PandasのDataFrameのデータ確認やデータ置換する用)

## 前提

私事ですが、Pythonデータ分析の前処理の流れは、

1. DataFrameとして取り込んだデータを確認し、
1. どのようにデータを変換したいか考え(例えばブランクがあるので、その行は全部消したい等)
1. データを変換する

この記事は、DataFrameとして取り込んだ「データ確認」と「データ変換」で使えるカンニングシートです。

“`py
# 必要なライブラリ
import pandas as pd
import seaborn as sns
“`

## データの確認

### 特定の行のデータを確認する

“`py
# 頭の3行を表示
df.head(3)

# 最後の4行を表示
df.tail(4)

# 2,4,6行目を表示
df.loc[[1,3,5]]

# 4~9行目を表示
df.loc[3:8, :]

# 条件を指定して合致する行のみを表示する
df[df[‘currency’] == ‘USD’] # currencyカラムがUSDの行のみ抽出して表示。
df[df[‘cost’] > 30000] # costカラムが300

元記事を表示

虚数が実数から現れる時(惑星の軌道編)

 [前回](https://qiita.com/hibit/items/2735ea92236dcb8bebac)に引き続き、Pythonを用いて、実数のみを用いた簡単な関係式をシミュレートすると不思議な結果が出てくること及び、虚数を使うとそれがうまく説明できるようなケースを紹介することで、より皆様に虚数に親しみを持ってもらおうと思います。

# 惑星の運動方程式

 突然ですが、万有引力による惑星の運動方程式は以下のようなものになります。

“`math
\vec{F} = m\vec{a} = -\frac{GMm}{r^3}\vec{r} \\
\vec{F}:力 \\
m:惑星の質量 \\
\vec{a}:惑星の加速度 \\
G:万有引力定数 \\
M:恒星の質量 \\
m:惑星の質量 \\
\vec{r}:惑星の位置 \\
r:\vec{r}の長さ
“`
 解析的に解くには2回積分をする必要があり、かなりめんどくさいのですが、そこはPythonに任せて力任せにシミュレートすればなんともないです。また、仮定は可能な限り単純化します。$GM=1$となるような都合のいい恒星(

元記事を表示

【Python】【ffmpeg】ffmpegで.movから.mp4に変換する

# はじめに
題記の通り .movから.mp4に変換する

最近、iphoneで撮影した動画をWindowsに移動させた。
しかし、拡張子が”.mov”のため、windowsで再生するには¥120を課金してコーデックが必要になる

値段が高いわけではないが、ffmpegのコマンドを使用すれば変換できることは知っていたため、GUI(もどき)で実行できるソースを作成して変換できるようにする。

なお、ffmpegの変換コードは以下の通りである

“`
$ ffmpeg -i (変換前ファイル.mov) -pix_fmt yuv420p (変換後ファイル名.mp4)
“`

これをコマンドプロンプトを開かずとも、GUIで複数ファイルを変換できるようにするため、pythonのtkinterでコーディングする。

# どんな実行画面?
実行するならば、次章に記載したgithubからexeファイルをDLするか、pythonのソースコードをコピペして実行してほしい

1. 変換したいファイルをとあるフォルダに格納すべし
![image.png](https://qiita-image-st

元記事を表示

【知ってた?】えっ!?環境構築しなくてもPythonも機械学習も使えて、その上GPUまで使わせてもらえる無料ツールがあるってマジ!?

#はじめに
Pythonや機械学習を勉強しようと思って環境構築を試みるも挫折したことのある人におすすめのツールがあります。それはGoogle Colaboratoryです。

https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja

#Google Colaboratoryとは?
Colaboratoryは、ブラウザから Python を記述、実行できるサービスです。次の特長を備えています。

+ 環境構築が不要
+ GPU、TPUへの無料アクセス
+ 簡単に共有可能

使用するのに必要なのはGoogleアカウントだけです。Pythonと一通りのライブラリが揃っているので、アクセスしたらすぐに使い始めることができます。

#Qiitaでの参考資料
すでにわかりやすい説明記事があるので具体的な使用方法はそれらの記事に譲らせてもらいます。

https://qiita.com/beehibiki/items/3ae6ea5e5a011ebcd0b7

https://qiita.com/kazoo04/items/a0

元記事を表示

torchvizで計算グラフを可視化

## Torchvizのインストール

“`
$ pip install torchviz
“`

## ネットワークの定義

* 可視化したいネットワークを定義する
* 本稿では,ニューラルネットワークを可視化する

“`python:NeuralNet.py
import torch
import torch.nn as nn
import torch.nn.functional as F

INPUT_SIZE = 10

class NeuralNet(nn.Module):
def __init__(self):
super(NeuralNet, self).__init__()
self.fc1 = nn.Linear(INPUT, 256)
self.fc2 = nn.Linear(256, 128)
self.fc3 = nn.Linear(128, 10)

def forward(self, x):
x = self.fc1(x)
x = F.re

元記事を表示

ABC218 C – Shapes から学んだ

https://atcoder.jp/contests/abc218/tasks/abc218_c

![218C_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/b09baf36-ee78-6000-ced9-d8f9baabe22e.png)

時間一杯つかったが、time out。

![218C_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/55794413-7cd5-f8d7-881d-c33921723393.png)

納得いったものをコンテスト後に入力したが WA だった。

##改善点1 配列の回転に Append は不向き

“`rotated_bad.py
def one(S,T):
lis = []
for _ in range(N):
lis.append([])

for w in range(N):

元記事を表示

【Python】整数を16進数に変えるプログラム!

 前回、整数を2進数に変えるプログラムを作成しました。その時の反省点も踏まえつつ、今回は整数を16進数に変えるプログラムを作ってみました。

https://qiita.com/kim-shun/items/db4611e42d7ca7849124

“`python
def cal_hexa(num):
nums = [‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’A’,’B’,’C’,’D’,’E’,’F’]
hexa = “”
while num:
remainder = num % 16
hexa = nums[remainder] + hexa
num //= 16
return hexa

num = int(input(“整数を入力してください:”))
result = cal_hexa(num)
print(result)

#Python標準機能の場合
print(hex(num))
“`

 出力結果は以下のようになります。

“`
整数を入力し

元記事を表示

PythonでXGBoost

公式

https://xgboost.readthedocs.io/en/latest/parameter.html

https://htomblog.com/python-xgboost

pandas型で説明変数/被説明変数、学習/テスト、データを用意する。
x_train, y_train
x_valid, y_valid

モデルを作成して予測値を計算する。

“`python
import pandas as pd
import xgboost as xgb

dtrain = xgb.DMatrix(x_train,y_train)
dvalid = xgb.DMatrix(x_valid,y_valid)

params = {
“objective” : “reg:squarederror”,
“eval_metric” : “rmse”
}

model = xgb.train(
params = params,
dtrain = dtrain,
evals = [(dtrain, “train”), (dvalid, “

元記事を表示

RGB to RAW(Bayer)変換の解説

## RGB to RAW変換概要
## 初めに
RGBをRAWのデータに変換する方法として、RGBデータを間引く方法を説明します。
今回は例として256x256x3のRGBデータを128 x 128 x 4のRAWデータに変換するものを図として以下に示します。

※一般的なベイヤ配列を想定していますので、ダブルベイヤやクアッドベイヤなどの説明は省かせていただきます。

データサイズは
$ RGB = [h , w , 3 ] → RAW = [h/2 , w/2 , 4]$
となります。
また、RAWをベイヤ形式に並べると
$ Bayer = [h,w, 1] $
となります。

前述したとおり、データを間引くだけの単純な処理となるが、$G$チャネルと残りの $R,B$チャネルで少しだけ処理が違うことに注意する。 $G$チャネルはRAWに変換する際に奇数行と偶数行で分けて処理をしますが、最終的なベイヤ配列にする際に$R$チャネルと隣り合うものを$Gr$,$B$チャネルと隣り合うものを$Gb$とします。

### R
![RGB2RAW_R.png](https:/

元記事を表示

python指定フォルダ内のサブフォルダにあるファイルを別のフォルダに移動する

以下のフォルダ内に複数サブフォルダがあり、サブフォルダ内のmp4ファイルを
G:/folder/
├── folder1
│  └── file2.mp4
└── folder2
    ├── file3.mp4
    └── file4.mp4

以下のフォルダのように移動するプログラムです。
G:/move_folder/
├── file2.mp4
├── file3.mp4
└── file4.mp4

絶対パスで指定できます。

“`move_folder.py
#指定フォルダの下にあるサブフォルダ内のmp4ファイルを指定フォルダに移動
import os
import glob
from pathlib import Path
import shutil

#パスは/に変更
dir_path = Path(“G:/folder/”)#サブフォルダがあるフォルダ
move_path = “G:/move_folder/”#ファイルを移動するフォルダ
#サブフォルダをリストにする
subfolder_list = dir_path.iterdir()
#ファイルを移動
f

元記事を表示

python初学者の備忘録 ①型について

#データ型とは

`基本`

*int型(整数型)*
例:「1」「-5」など
*float型(浮動小数型)*
例:「0.1」
*str型(文字列型)*
例:「あ」
*bool型(ブール型)*
例:「True」「False」

#型を調べる

:::note info
type関数:型を返す
:::

“`python:type.py
number = 1
number2 = 1.0
greeting = ‘こんにちは’ または “こんにちは”
is_ok = True
print(number,type(number))
print(number2 ,type(number))
print(greeting ,type(number))
print(is_ok ,type(number))

# — 実行結果 —
# 1
# 1.0
# こんにちは

元記事を表示

OTHERカテゴリの最新記事