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

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

pulpとnetworkxの使い方

AtCoder231 H – Minimum Coloringを対象としたサンプルプログラムを以下に示します。
格子状のマス目にコストが設定されていて、それぞれの行と列から一つ以上のマス目を
選択する場合のコストの合計の最小値を求める問題です。

https://atcoder.jp/contests/abc231/tasks/abc231_h

pulpを使用した場合のサンプルプログラムを以下に示します。
本番環境ではpulpは使用できません。

https://coin-or.github.io/pulp/

“`python
H,W,N = list(map(int, input().split()))
abc_list = []
for _ in range(N):
a,b,c = list(map(int, input().split()))
abc_list.append((a-1,b-1,c))

import pulp
problem = pulp.LpProblem(sense=pulp.LpMinimize)

from collections i

元記事を表示

Pythonのenumerate()について

for文を使うときに値とインデックス番号を同時に取得したいと思ったことはないでしょうか?
そんな時にはenumerate()が便利です!

# 目次
[enumerate()でできること](#enumerate()でできること)
[インデックス番号を任意に変える](#インデックス番号を任意に変える)
[複数のリスト](#複数のリスト)
[インデックスと値を一文で表示する](#インデックスと値を一文で表示する)
[インデックスと値を個別に取得](#インデックスと値を個別に取得)
[辞書](#辞書)
[タプル](#タプル)
[set型](#set型)
[文字列](#文字列)
[array](#array)
[多次元リスト](#多次元リスト)

# enumerate()でできること

enumerate()は指定した配列のインデックスを取得する関数で、enumerateオブジェクトを返します。引数にはシーケンスかiteratorか、イテレーションをサポートするその他のオブジェクトでなければなりません。

enumerate()の処理は以下のようになっています。
“`python
def

元記事を表示

EC2にデプロイしたDjangoからAWS SESを使う

# はじめに
EC2からメールを送信する方法はいくつかあります。
自分用メモとして、その中でも一番メジャーであろうSESを使ったメール送信について残しておきます。
# ドメインの取得
メールを送信するためにはドメインが必要となります。(~@mail.comの部分ですね)
こちらは以下のサイト参照で取得しておきましょう。
### Route53から直接購入する場合
「ドメインのRoute 53への登録」までですね。
https://dev.classmethod.jp/articles/relaxing-send-limit-and-removing-sandbox-restriction-in-ses/

### 他のサービスを使う
ドメインはRoute53で買わずとも、他のドメイン登録サービスを使うこともできます。
有名なのはお名前.comですね。
先にドメインを取得しておいて、お名前.comの設定ページのネームサーバー欄にRoute53のNSレコードを貼り付けたら完了です。
お名前.comで取得するとキャンペーンとかで安くなる事が多いのでおすすめです。

こちらもDeveloper

元記事を表示

backtesting.pyでアウトオブサンプルテストをする

**システムトレード検証と実践** を読みながらシステムトレードの勉強中です。システムトレードではシステムの評価に過去のデータを使ったバックテストを行います。今回の参考書では、

ヒストリカルバックテスト
システムのパラメータを、過去のデータを用いて最適化し、システムの成績を評価する
アウトオブサンプルテスト
直近のデータを一部残し、その他のデータでシステムのパラメータを最適化した後、残しておいた直近のデータでシステムの成績を評価する
ウォークフォワードテスト
アウトオブサンプルテストを期間をずらしながら複数回、最適化と評価を行い、各評価期間の成績を繋げることでシステムの成績を評価する

の3つのバックテストについての紹介があり、システムの詳細な評価のためにはウォークフォワードテストが必要とのことです。

Pythonでバックテストを行うライブラリはたくさんあるのですが、日本語の情報が多いのは[backtesting.py](https://ke

元記事を表示

楽して使うTkinter(基本編)

# 楽して使うTkinter(基本編)

コードを書く目的というのは…ドヤりたいわけではなく、目的の動作をするプログラムを作りたいわけで、毎度毎度似たようなコード書くのも誰かに使ってもらうためにいちいちサポートしなきゃいけないのも面倒だから分かりやすくしたいし難しいこと考えずに使えるようにしたい。とにかく楽したい。

というところでどんだけ手を抜けるようにするかという話です。

## mainloop問題

Tkinterで最初に悩んでいたのはこれだったと思いますしこれに関する話題は結構目にします。

画面を表示したいし、その後画面の中の処理をどうにかしたいみたいな、ね。

でもmainloopを呼ぶとそこから処理が帰ってこない。どうすんのこれってな感じ。

そういうところをどうにかするための基本形を自分なりにつくります。例えばこんな感じ。

“`python
import tkinter as tk
import threading

# スレッドデコレータ
# 画面が反応なしになっちゃうような処理があるファンクションにつける。
def thread(func):
de

元記事を表示

[Python実践]Loggingに挑戦してみよう!《基礎編》〜公式ドキュメントをもとに解説〜

# はじめに

今回はPythonの「Logging」の基礎について解説していこうと思います!

応用編はこちらにになります。

https://chaldene.net/logging-senior

「**Logging**」はPythonの実務などでよく使われるので、Pythonエンジニアを目指している方は是非この記事でマスターしていってください!

この記事はPythonの公式ドキュメントを参考にしています。

Pythonに限らず、プログラミング言語の公式ドキュメントは非常に読みにくいので、この記事でわかりやすく解説していきます。

「**Loggingよく見かけるんだけど全くわからない…**」

「**Pythonエンジニアを目指して学習中**」

「**Pythonスキルのレベルアップをしたい!**」

このような人のお役に立てれば幸いです。

それでは早速本題に入っていきましょう!

:::note info
「Logging」はPythonの基礎を理解していないと難しいので、Pythonの基礎を理解していない人は以下を参考に学習してください!
:::

https

元記事を表示

[学習メモ]pytorchの基本2

[最短コースでわかる PyTorch &深層学習プログラミング](https://qiita.com/makaishi2/items/2c40fe43c01b35acb8c4)の[5章線形回帰](https://colab.research.google.com/github/makaishi2/pytorch_book_info/blob/main/notebooks/ch05_regression.ipynb#scrollTo=3bcQHUdyXpCt)より

## 乱数の固定
再現性を保つために乱数の固定をしましょう。

“`python
# 乱数の種固定
torch.manual_seed(123)
“`

## カスタムクラスによるモデル定義

Netというクラスが作成されてり、親クラスは`nn.Module`である。また、クラス内部には`forward関数`が定義されていて、この関数で予測処理を行う。
pytorchでは、モデル用のクラス内部で必ずfoward関数を定義し、入力テンソルinputsを入力として出力テンソルoutputsを出力するための処理を記述するルール

元記事を表示

WindowsのanacondaでGMTを使用して地図を描く

anacondaを利用すればWSLを使わずに簡単にGMTを使うことが出来ると聞き、実際に使用してみました。導入から簡単な使用法まで書いていこうと思います。

ちなみにこれがマダガスカルッ!!
![madagascar.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1252522/a91499dd-574d-0efc-6bf5-6cbbdf7e3ff5.jpeg)

# GMT(Generic Mapping Tools)
手軽に地図を描画できるツールとして有名なもの。
筆者は今までmacで利用していたがWindowsでも利用したいと導入した。
公式サイト
[GMT6](https://www.generic-mapping-tools.org/)

# 環境構築
[PyGMT](https://www.pygmt.org/latest/install.html)より引用したコードを使用します。
## はじめに
今回はpygmtというライブラリを使用しますが、anacondaであれこれやる前にGMT6

元記事を表示

しがないデータサイエンティストが便利だと思ったロギングの手法まとめ

# はじめに
こんにちは。しがないデータサイエンティストです。
突然ですが皆さんはデバッグは好きですか?僕は嫌いです。コードを書いている時は自分は天才だと思いながら進めていますが、あとから見返すと誰だこのウンコードを書いた奴は?😡を繰り返しています。業務では機械学習スクリプトを実装することが多いのですが、規模が大きくなってくるとどこで何のエラーが出ているのか追うのも大変になり修正に手を付けるまでが億劫になります。

これまでデバッグ作業は`print`を用いてなんとなくやっていたのですが、実行ログの出力としてpythonの`logging`を使ってみると非常に便利で、デバッグ作業が大好きになりました。嘘です。大好きにはなってはいませんがデバッグがやり易くなったのは本当です。個人的に結構詰まるポイントが多かったので振り返り用にまとめていこうと思います。

# 参考
公式リファレンスと以下記事を参考にさせていただきました。
[Logging HOWTO](https://docs.python.org/ja/3/howto/logging.html)
[Good logging pract

元記事を表示

ChromeDriver でよく使うオプションのチートシート

# はじめに
毎回、気になったときに調べているような気がするのでまとめる。
ついでにnavigator.webdriverの対策もできる。
メモのつもりで書いているので深くは考えていない

# 環境
| アイテム | バージョン |
|:-|:-|
| OS| Windows 10 64bit |
| Python | 3.8.7 64bit |
| selenium | 3.141.0 |
| webdriver-manager | 3.5.4 |
| ChromeDriver | 101.0.4951 |

便宜上、 **webdriver-manager** を使っています。使い方は省略、以下に参考URLを置いておきます。

https://qiita.com/centerfield77/items/0aebd6ed452b278d872c

:::note warn
**webdriver-manager** を使わない人向け
下記にある**コピペできるコードブロック**の内容を変更してください。
【削除】`from webdriver_manager.chrome im

元記事を表示

[学習メモ]pytorchの基本1

[最短コースでわかる PyTorch &深層学習プログラミング](https://qiita.com/makaishi2/items/2c40fe43c01b35acb8c4)の[3章はじめての機械学習](https://colab.research.google.com/github/makaishi2/pytorch_book_info/blob/main/notebooks/ch03_first_ml.ipynb)より

### はじめに
勾配降下法におけるステップは4つで「予測計算」「損失計算」「勾配計算」「パラメータ修正」である。
損失とは「予測関数」と「損失関数」の合成関数である。

### 最適化関数を使わない場合

初期化
“`python
# 初期化

# WとBを変数として扱う
# WとBは勾配計算をするので,requires_grad=Trueとする
W = torch.tensor(1.0, requires_grad=True).float()
B = torch.tensor(1.0, requires_grad=True).float()

# 繰り返し

元記事を表示

再帰的なsitemap.xmlからページ一覧を取得する方法

アキ@IT業界の歩き方です。
[株式会社アスターリンク](https://www.aster-link.co.jp/)に在籍し、ITエンジニアやSEO担当をしています。
今回はSEOの調査でめんどくさいと思ったことと、簡易的な対処法を紹介していきます。

SEOの調査をする時に、ページ一覧を取得したいと思ったことはありませんか?
例えばページ一覧を取得できれば、下記の調査が進みます。
– ページURL
– TDKh1(title、description、keywords、h1)
– アンカータグのURLやアンカーテキストの取得

他にもホームページ制作のリニューアル案件で、手っ取り早く見積もりを出すために、ページ一覧を知りたいといった事があるでしょう。
では、どのようにページ一覧を取得すればよいのでしょうか?
# 手っ取り早くページ一覧を取得するにはsitemap.xmlから取得する
ページ一覧を取得するにはsitemap.xmlからの取得が手っ取り早いでしょう。
一般的なWebサイトであれば下記のURLにsitemap.xmlが存在します。
>https://example.com/

元記事を表示

統計的推定と検定をPythonで解く「統計的仮説検定(2標本の平均の差の検定、対応のないt検定、ウェルチの方法)」(2020.4.28)

# 背景
前回は「対応のない2標本の平均の差のt検定」をしました。2標本の検定統計量を算出して、帰無仮説を棄却するかどうか判断するのでした。前回はウェルチの方法を使わない方法で行いました。今回はウェルチの方法を使いたいと思います。

ここで気になるのが、ウェルチの方法を使う時と使わない時の違いです。それは「2標本の母分散が等しい」と仮定できるかどうかの様です。前回は同じテストだった為、同じ母集団と見なす事が出来そうです。これは「2標本の母分散が等しい」と言えそうです。ウェルチの方法を使う際は「2標本の母分散が等しい」と仮定できない時の様です。ここで、再度「対応のあるなし」について気になりました。それが「同じ母集団かどうか」の違いだったと思いましたので、「同じ母集団」と「2標本の母分散が等しい」は分けて考えているのだと思います。この辺は、もう少し詳しくなってから考えるとして、今回はウェルチの方法を使った「対応のない2標本の平均の差のt検定」を考えてみます。

今回は、[谷合(2018.10.5)、Pythonで理解する統計解析の基礎、技術評論社](https://gihyo.jp/boo

元記事を表示

テストページ3

テストページ

元記事を表示

テストページ2

テストページ

元記事を表示

テストページ1

テストページ

元記事を表示

B – Five Dishes AtCoder

## 問題
https://atcoder.jp/contests/abc123/tasks/abc123_b

## 回答

“`Python
a = [int(input()) for _ in range(5)]

b = []
c = 0

ans = 0

for i in range(5):
if a[i] % 10 != 0: #10で割り切れなかったら
c = max(c, 10 – a[i] % 10) #標準入力の中で一番大きいあまりの数をcに代入。最後は10の倍数まで足す必要ないのでひく。
a[i] += 10 – a[i] % 10 #余りに対して10の倍数になるように足す。
b.append(a[i]) #10までの標準入力に10の位の数までの数字を足した数字を配列として代入。
else: #割り切れたら
b.append(a[i]) #bに配列として代入する。

ans = sum(b) – c #bの数は全てあまりの数を入れており、最後の数は10の位になる時刻を待つ必要ない。

print(ans)

元記事を表示

Pythonで作るスネークゲーム

## はじめに
 今回はPythonで、ヘビ状のオブジェクトにエサを食べさせて成長させる「スネークゲーム」を作ってみたいと思います。前回の記事で取り上げたPing Pongゲームに引き続き、Python初心者向けのゲームの一つです。Youtubeなど、ネットに多く教材がありますので、ぜひ参考にしてみてください。
 今回はpygameという、Pythonでゲーム作成をするときに便利なライブラリを使用しています。
今回のソースはこちらの動画に基づいて作成しています。
[“How to build SNAKE in Python!”](https://www.youtube.com/watch?v=9bBgyOkoBQ0)

## ゲーム概要と必要なオブジェクト及び処理
 そもそもスネークゲームとはどのようなゲームでしょうか。こちらが今回作るスネークゲームの外観です。

![スクリーンショット 2022-04-28 8.33.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1676583/5d931adc

元記事を表示

ローリングハッシュ備忘録

ローリングハッシュアルゴリズムのメモ

## 結論
Pythonのindex関数、inはかなり早い
C言語のstrstrでの検索が最強
付け焼刃でよくわからずアルゴリズムを実装したもので評価したので、間違ったことをしてるかもしれないが、
ローリングハッシュ別に速くはなく、価値がわからなかった。O(N+M)らしいのだけども
ネットで参考にしたハッシュ関数が悪いのかなあ。。

文字列の部分一致検索に使える模様
以下はSource(S)の何番目にマッチしたかを返す関数

# Pythonの場合

C++の実装からPythonらしい書き方で実装してみた

“`python

def find(S:str, P:str, B1:int = 0x5f5e107, B2:int = 0x3b9aca07):
“”” find string match by rolling_hash algorithm
[Argument]
S : Search Target Source String
P : Search Word Str

元記事を表示

[AtCoder] 個人的に使用頻度が高いitertoolsまとめ

AtCoderで組み合わせ問題など抽出方法をどうしようか迷いますよね。
自作するのも一つの手ですが、itertools関数を使った方がバグらないです。
※一度自作して処理を考えることをお勧めします

## 表示用関数用意
“`python
import itertools

def printitertools(itertool_return, describe):
print(describe)
for i in itertool_return:
print(i)
print(“”)

“`

## デカルト積(product)
全bit探索にも使えます。

“`python
printitertools(itertools.product(range(2), repeat=3), “product”)

#product
#(0, 0, 0)
#(0, 0, 1)
#(0, 1, 0)
#(0, 1, 1)
#(1, 0, 0)
#(1, 0, 1)
#(1, 1, 0)
#(1, 1, 1)

“`

## 順列(Permutat

元記事を表示

OTHERカテゴリの最新記事