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

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

OpenCVとPILで図形を描写する

# はじめに
カンニングペーパーを作れば、その過程で理解が進むというもの。これは自分のための記事だ。
OpenCVに特化した記事を書くつもりだったのだが、理由があってPILについても書かざるを得なくなってしまった。
なお、一部の引数は省略している。

# OpenCV
## ベースとなる単色画像を作成する numpy.full(shape, fill_value, dtype)
OpenCVの画像データはnumpy配列なのでnp.full()で単色画像を作ることができる。
黒地の場合はもう少し簡単な記述ができるが個別に覚えるほどではないので略。

– *shape* 配列の形状。RGB画像を作るならば`(height, width, 3)`。
– *fill_value* 埋める値。RGB画像を作るならば`(b, g, r)`。
– *dtype* データ型。画像を作るならば`dtype = numpy.uint8`の指定が必須。

## 図形描写する
以下の関数は指定した画像を加工する。どういうことかというと、
`img = cv2.line(img, …)`
と戻り値を自

元記事を表示

ABC備忘録[ABC163 C – managementr] (Python)

>#問題文
$N$人の社員からなる会社があり、各社員には$1,…,N$の社員番号が割り当てられています。
社員番号1の社員以外の全ての社員には、自分より社員番号が小さい直属の上司がちょうど$1$人います。
$X$さんが$Y$さんの直属の上司であるとき、$Y$さんは$X$さんの直属の部下であるといいます。
社員番号$i$の社員の直属の上司の社員番号が$A_i$であることが与えられます。各社員について直属の部下が何人いるか求めてください。

>#制約
$2≤N≤2×10^5$
$1≤A_i

元記事を表示

AtCoderBeginnerContest161復習&まとめ(後半)

# AtCoder ABC161
2020-04-04(土)に行われたAtCoderBeginnerContest161の問題をA問題から順に考察も踏まえてまとめたものとなります.
後半ではDEFの問題を扱います.[前半はこちら](https://qiita.com/takaito0423/items/d9b9dba33b963fef32a1).
問題は引用して記載していますが,詳しくはコンテストページの方で確認してください.
[コンテストページはこちら](https://atcoder.jp/contests/abc161)
[公式解説PDF](https://img.atcoder.jp/abc161/editorial.pdf)

## D問題 Lunlun Number
> 問題文
> 正の整数$X$が以下の条件を満たすとき、$X$はルンルン数であると言います。
>  ・$X$を(leading zeroなしで)十進数表記した際に、隣り合うどの2つの桁の値についても、差の絶対値が1以下
> 例えば、1234, 1, 334などはルンルン数ですが、31415, 119, 1357

元記事を表示

Splunkで日本のCOVID19感染状況を表示する(GitHub掲載(予定)版)

[東洋経済オンライン](https://github.com/kaz-ogiwara/covid19/)のデータを利用して、クエリーを作り直しました。

`2020/03/11`からのデータになります。
そのため、Bubble Chartなどは欠損データを直近の値で埋めています。
:sweat:NHKのデータって公開利用するのにお断りとかどうすればいいのだろ。

#データの取得
##pythonによる取得
“`python:dl_toyo.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import json

headers={‘accept’: ‘application/json’, ‘content-type’: ‘application/json’}

response = json.loads(requests.get(‘https://raw.githubusercontent.com/kaz-ogiwara/covid19/master/data/data.json’, headers=

元記事を表示

Pythonで日経新聞ウェブサイトから個別銘柄の株価をスクレイピングする方法

株価を分析して買い時の銘柄を見つけようと思い、日経新聞のサイトからスクレイピングをしてみました。無料で株価を提供するサイトは[株式投資メモ](https://kabuoji3.com/)など色々あるのですが、不定期更新のことが多いです。日経新聞のサイトは毎日ちゃんと更新されます。

まず、サイトをスクレイピングする際には色々と[ルール](https://qiita.com/nezuq/items/c5e827e1827e7cb29011)を守らないと犯罪になってしまいますが、日経新聞の[robots.txt](https://www.nikkei.com/robots.txt)とか[利用規約](https://www.nikkei.com/info/copyright.html)をみる限りは個人利用の範囲なら問題なさそう(?)です。(ダメそうだったらtwitterとかで教えてください)

pandasというモジュールののread_html()というメソッドを使うと秒でかけます。

“`python:nikkei_scrape.py
import pandas as pd

def

元記事を表示

Python #Numpy基礎

学習メモ・備忘録

#Numpyについて
豊富な数学計算ライブラリをもち、効率的な数値計算を行うことのできる代表的なライブラリ。

## ndarray型
代表的な数値計算パッケージの`Numpy`で使用する基本データ型。

##### 記述例
~~~python
# ndarray型の作成
import numpy

a = [0, 1, 2, 3]
b = numpy.array(a) # リストからndarray型を作成
print(‘b = ‘, b)

c = [1, 2]
d = [2, 3]
e = [3, 4]
f = numpy.array([c, d, e]) # 二次元のndarray型を作成
print(‘f = ‘, f)

g = numpy.array(a, dtype = numpy.float16) # データ型を指定してndarrayを作成
print(‘g = ‘, g)
~~~
実行結果
>b = [0 1 2 3]
>f = [[1 2]
> [2 3]
> [3 4]]
>g = [0. 1. 2. 3.]

## 基本的な

元記事を表示

AtCoder Beginner Contest 109 過去問復習

#所要時間
スクリーンショット 2020-04-26 9.25.40.png

#感想
昔の問題はパフォーマンスが良さげに出るので嬉しいですが、得意な問題だったので気を引き締めたいです。
DPが苦手なので、そろそろDP対策をしたいなあと思っています(DPコンテストみたいなのがあった気がする。)。

#[A問題](https://atcoder.jp/contests/abc109/tasks/abc109_a)

$A \times B$が奇数か偶数かを調べれば良いです。

“`python:answerA.py
a,b=map(int,input().split())
print(“Yes” if (a*b)%2==1 else “No”)
“`

#[B問題](https://atcoder.jp/

元記事を表示

Pythonのデコレータを利用したグローバル変数の初期化

# はじめに
githubでpipのリポジトリを見ていたら、面白いデコレータの使い方をしていたので共有します。

# TL;DR
– デコレータは関数を修飾するためだけでなく、**関数を実行するため**に用いることもできる。
– [本題](#デコレータの内部で関数を実行する)

# importした時のグローバル変数の値
まず、以下のようなパッケージをimportした時にグローバル変数がどのような値をとるのでしょうか。関数`spam`も`egg`もグローバル変数`global_variable`を更新するためだけの関数です。

“`python:mypackage/__init__.py
GLOBAL_VARIABLE = 0

def spam():
global_variable = 1
globals().update(locals())

def egg():
global global_variable
global_variable = 2
“`

“`python:main.py
import mypackage
if __name_

元記事を表示

編集距離に基づく音声認識誤りに頑健なキーワードマッチング – テレビ番組名検索の実装例紹介【Python】

#概要
文字列の完全一致ではなく、編集距離によって求めた文字列の近さを指標とすることで、音声認識を多少間違えても正しい検索結果が表示されやすいキーワード検索プログラムを作りました。
具体例として本稿では、事前に取得したテレビ番組名リストから、特定キーワードを含むものを音声認識で見つけるプログラムを作ります。これができると例えば、下記のような番組名をスマートスピーカに伝えてチャンネルを変更するスキルを作るのに役立ちます。

元記事を表示

画像の台形補正をしてみた

# 動機

– 近所にあるショッピングモールには、外通路に多くの植物が植えられていて、一緒に植物の説明が記載されているプレートがあります。どんな種類(100種類以上はあると思われる)の植物があるか気になった為、プレートの情報を集計する事にしました。
– しかしプレートの情報をスマホに打ち込んで情報収集するのは面倒くさい。。。ちょっとでも簡略化する為に写真を撮り、補正してからOCRする事にしました。

## 補正前画像

# やった事
1. プレート画像の取得
1. プレート以外の箇所をマスク・二値化
2. ノイズ除去
3. 輪郭の取得・近似
近似
2. プレート画像の補正
1. 台形補正

## 1. プレート画像の取得
### 1. プレート以外の箇所をマスク・二値化
画像をHSV形式

元記事を表示

中学校の委員分け

## これなに

生徒の希望を元に「クラスの委員を割り当てる問題」を組合せ最適化で解きます。
[中学校の委員分けを最小費用流で最適化してみた話](https://qiita.com/defineprogram/items/b8eb70bb92101241703b)のPython版です。

## 方針

– 生徒の委員の希望を1レコードとしたpandas.DataFrameを作成します。
– 第1希望のコストを10、第2希望のコストを30とします。
– DataFrameを使って数理最適化モデル(コスト最小化)を作成します。
– [数理最適化モデル](https://qiita.com/SaitoTsutomu/items/070ca9cb37c6b2b492f0)をソルバーで解いて割り当てを出します。

## 数理最適化モデル

– 変数:DataFrameの列として作成(1行1変数)。
– 目的関数:希望コストの総和最小化
– 制約条件
– 生徒がなれる委員は1つまで
– 委員は定数を満たす

## 入力

DataFrameを作成します。

“`
import pan

元記事を表示

hashlibのハッシュ

“`py
import base64
import os
import hashlib

#print(hashlib.sha256(b’password’).hexdigest())

user_name = ‘user1’
user_pass = ‘password’
db = {}

salt = base64.b64encode(os.urandom(32))

def get_digest(password):
password = bytes(password, ‘utf-8’)
digest = hashlib.sha256(salt + password).hexdigest()
for _ in range(10000):
digest = hashlib.sha256(bytes(digest, ‘utf-8’)).hexdigest()
print(digest)
print(digest)
return digest

#上記関数を下記で置き換えることもできる
#digest = hash

元記事を表示

pycryptoの暗号化と復号化

“`py
import string
import random

#pip install pycrypto
from Crypto.Cipher import AES

key = ”.join(
random.choice(string.ascii_letters) for _ in range(AES.block_size)) #内包表記

iv = ”.join(
random.choice(string.ascii_letters) for _ in range(AES.block_size)) #内包表記

plaintext = ‘fdsfsdgsgsfgs’
cipher = AES.new(key, AES.MODE_CBC, iv)
padding_length = AES.block_size – len(plaintext) % AES.block_size #paddingする文字列の長さを計算
plaintext += chr(padding_length) * padding_length #paddingする
cipher_te

元記事を表示

(WIP) 線分を描画する「ブレゼンハムのアルゴリズム」を検証する

# Status

いまのところ描画と人力での証明のところまで。次は TLA+ か Coq などの定理証明系で証明したい。
ところで、MathJax の垂直位置ずれすぎじゃね?

# 概要

ブレゼンハムのアルゴリズムとは、ピクセルで表現された画面上に線分を描画するためのアルゴリズムである。
ピクセルの座標は整数値しか持てないため、近似アルゴリズムが必要になる。
そのときに、誤差を持つ浮動小数点演算を行わないで計算を行える点がこのアルゴリズムの長所である。

# 参考文献

– Wikipedia, ブレゼンハムのアルゴリズム: https://w.wiki/P2G

# 問題設定

端点 $(x_0,y_0)$ と $(x_1,y_1)$ を結ぶ線分を描画する。ただし、

– 端点は格子点、つまり座標値は整数である。
– 端点はどちらも第一象限にある、つまり、$0

元記事を表示

pythonでGoogle Driveの任意のフォルダにスプレッドシートを作成・編集する

題名の通りです…。

(個人的な話ですが、)スクレイピングしたデータをスプレッドシートに書き出したかったのですが、
既存のスプレッドシートを編集する方法の記事はよく見かけても、
スプレッドシートを新規作成して編集する記事を見つけられなかったので共有します…!

この記事では、Google Driveの扱い方とスプレッドシートの扱い方を同時に簡単に紹介しています。

# 対象読者
– pythonでgoogleスプレッドシートを扱いたい
– 任意のフォルダを指定してスプレッドシートを新規作成したい

# 流れ
– サービスアカウントキーの取得 (jsonファイル)
– スプレッドシートを作成したいフォルダをサービスアカウントと共有
– プログラミング!!

# サービスアカウントキーの取得 (jsonファイル)
プログラミングでDriveとスプレッドシートを扱うためには、Google Drive ApiとGoogle Sheets Apiを有効にしたサービスアカウントを用意する必要があります。

以下の記事がとても参考になったので、こちらを参考にサービスアカウントキーを取得します。
[P

元記事を表示

ESPnet をMacbookに実装

#経緯
オープンソースの音声認識ライブラリをMacで使いたっかたのですが、いろいろサーベイした結果、できるかどうかの結論すらわかりませんでした。
[Requirement environments according to ESPnet official documents](https://espnet.github.io/espnet/installation.html#requirements)

“`
Supported Linux distributions and other requirements
We support the following Linux distributions with CI. If you want to build your own Linux by yourself, please also check our CI configurations. to prepare the appropriate environments
ubuntu18
ubuntu16
centos7
debian9
“`
(ドキュメンテーションではLinu

元記事を表示

valueerrorがわかりません

raise ValueError(‘Unable to configure handler ‘
ValueError: Unable to configure handler ‘mail_admins’
こちらのエラーの解決方法どなたか分かりませんか?

元記事を表示

【Python入門】Pandas.DataFrameで複数の条件を満たす行を削除する方法

こんにちは。

最近は**Python**にも触れてる僕です。

今は社内の業務効率化で、経理がExcelとCsvを使って手作業で行っている入金消込処理を**Python**を使って自動化を試みています。
※「未だにExcelなの?」のようなツッコミはご遠慮ください。
当初は**VBA**か**C#**を使うかと思いましたが、せっかくならデータ処理が得意との噂の**Python**を使ってみようと思い、はじめて**Python**に触れてみてます。

Excel操作に**openpyxl**、データ処理に**pandas**を使っているのですが、未だに**pandas**には手を焼いており、**C#**なら瞬殺でコードが組める処理でも苦戦したりしています。

そんな苦戦したことをメモ代わりに書き残していきます。

今回のメモはこちら。

##Pandas.DataFrameで複数の条件を満たす行を削除する方法

「そんなん簡単じゃん!」とツッコミが入るかもですが、いろいろ試してたのでメモっておきます。

DataFrameの行を削除する方法を調べると、**drop**と言う関数がありま

元記事を表示

#2 Python初学者がAtCoderに挑戦! ABC085C – Otoshidama

#AtCoderの重要性
そんなものは始めたてなのでわかりません。ただ論理的に考えたり、学んだことをアウトプットして確認できるので良いなと楽しいです。
就活をしていて気づくのですが、大手のIT企業なんかはAtCoderのスコアかけたりしますね。そういう意味でもただの自己満足というだけでなく、客観的にも判断されるものかもしれません。今は[こちら”AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~”](https://qiita.com/drken/items/fd4e5e3630d0f5859067)から順に解いていっています。

#問題(引用です)
【問題概要】
10000 円札と、5000 円札と、1000 円札が合計で NN 枚あって、合計金額が YY 円であったという。このような条件を満たす各金額の札の枚数の組を 1 つ求めなさい。そのような状況が存在し得ない場合には -1 -1 -1 と出力しなさい。

【制約】

1≤N≤2000
1000≤Y≤2∗107
N は整数
Y は 1000の倍数

#解いてから思ったこと
まずは、解説

元記事を表示

[TensorFlow 2] グラフモードでTensorの中身を確認する方法

# はじめに

TensorFlow (2.x) で学習時の損失関数やデータセットの変換部分に自作関数を使うときに、「思ったとおりの値が入っているのかな?」と確認しようと思って “print()“ を呼び出しても、値が出力されないときがあります。
“tfdbg“ などのデバッガーを使えば良いのでしょうが、もっとシンプルに、いわゆる「printデバッグ」をする方法をご紹介します。

“tfdbg“については→[tfdbg を使って Keras の nan や inf を潰す – Qiita](https://qiita.com/keisuke-nakata/items/5d6918678e8099b565d0)

# 検証環境

– Ubuntu 18.04
– Python 3.6.9
– TensorFlow 2.1.0 (CPU)

以下のコードでは、↓が書かれているものとします。

“`python
import tensorflow as tf
“`

# Tensor に対して print() した場合の挙動

TensorFlow 2.xでは Eager

元記事を表示

OTHERカテゴリの最新記事