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

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

Numpyで日本国旗をパラオ国旗にしたい

#はじめに

日本国旗をパラオ国旗にするために,numpyで簡単な画像処理を行いました.

#日本国旗とは

>**日本の国旗-Wikipedia**
日本の国旗(にっぽんのこっき、にほんのこっき)は、法律上は日章旗(にっしょうき)と呼ばれ、日本では古くから、一般的に日の丸(ひのまる)と呼ばれる旗である。

– 縦横比 2:3
– 円の直径 縦の3/5
– 円の位置 国旗の中心

※1999年に公布・施行された「国旗及び国歌に関する法律」に定められたもの

#パラオ国旗とは

>**パラオの国旗-Wikipedia**
パラオ共和国(Beluu er a Belau)の国旗は、中央のやや旗竿寄りに黄色の円を配し、明るい青を背景色とした旗である。

– 縦横比 5:8
– 円の位置 中心から旗竿よりに1/10ずれる

※円の直径は詳しい数字が分からなかったので日本国旗の円を使いました.

#コード

“`kokki.py
import cv2
import numpy as np

img = cv2.imread(“./test/japan.png”).astype(np.float

元記事を表示

Python超初心者の超初心者のためのPython #こんがりやすいとこ

環境
windows7 (Mac Book Pro 16inch欲しい)
Visual Studio Code
chrome

この記事はプログラミング初心者かつPython初心者に向けて記述します。

#こんがりやすい難解Pro用語
Pythonの学習を始めてProgateやドットインストールなどを見てコードを書いているとすぐに「????」の連続になります。
その一つにPro用語やコードの書き方がProなので初学者には難解なところがいくつかあり、まずはそこをクリアーにしないと学習スピードが上がりません(でした)。

1.変数名

“`python:confuse.py
str=str(123456)
print(str)
#=の左はstrという名前(変数名)。=の右はstr関数(変換ラベルのようなもの)の名前。
“`

=の右のstrはstringの略で、Pythonでは数字(数値という)を文字(文字列という)に変換しますよーという決まりごと=暗記ごとです。この界隈ではstr関数と言うそうです。
対して=の左の”str”はただの名前です。str関数を説明するために名前(変数名)”

元記事を表示

【python】整数の組み合わせで2次元配列を作成するプログラム 

#【python】整数の組み合わせで多次元配列を作成するプログラム 

自分用のメモです。

▼設問

– 重複のない[i, j, k]の2次元配列を作成する。
– i, j, kの条件は、与えられる正の整数x,y,zで決まる
– 0<=i<=x, 0<=j<=y, 0<=k<=z - ただし、i+j+kがnとなる場合の[i,j,k]は除外する。 [URL](https://www.hackerrank.com/challenges/list-comprehensions/problem) ▼sample input ```python: x,y,z,n=1,1,1,2 ``` ▼sample output ```python: [[0, 0, 0], [0, 0, 1], [0, 1, 0], [1, 0, 0], [1, 1, 1]] ``` ▼my answer ```python: if __name__ == '__main__': x = int(input()) y = int(input()) z = int(input()

元記事を表示

PCR検査の偽陽性のせいでコロナ騒動が永遠に終息しない可能性がある件

# はじめに
 新型コロナウイルス感染症(COVID-19)は2020年6月7日現在、感染者7百万人、死者40万人を突破し、人類史上稀にみる世界的パンデミックとなりました。日本では、緊急事態宣言宣言(4/7~5/25)による”国民的自粛”により、一時は743人/日(4/12)まで拡大していた感染が、31人/日(5/25)まで抑制されました。しかし、世界を見てみると未だに感染拡大が続いており、いつ終息を迎えるのか大変不透明です。
 日本の緩い自粛と当初の厳しい受診基準には様々な批判がありました。一方で、一部の国ではドライブスルー検査などを活用し、兎に角検査数を増やすことを最優先にしている政策がとられています。[ある記事](https://news.yahoo.co.jp/byline/takahashikosuke/20200430-00176176/)では、アメリカが人口千人あたり16.4人の検査をしているのに対し、日本では1.8人に過ぎないとの指摘がされています。
 しかし、新型コロナウイルスの確定診断にはPCR検査を用いられているものの、その精度(感度・特異度)については論争があり

元記事を表示

【python】hash関数とタプルの使い方。

#【python】hash関数とタプルの使い方

デフォルトで組み込まれている、ハッシュ値を返すhash関数の使い方。

##基本構文
`hash(tuple)`

引数には**タプル(tuple)**型の数値や変数を入れる。
 ・整数は元の数値が返る。
 ・listはエラー。

“`python:tuple
hash((2,4,5))

#出力
8794205387495702562
“`

“`python:listはエラー
hash([2,4,5])

#出力
TypeError: unhashable type: ‘list’
“`

“`python:intは元の数値が返る
hash(2)

#出力
2
“`

##タプル(tuple)とは

– 要素を追加したり、削除したりできない型。
– イテラブルのためfor文で取り出せる。
– 数値でも文字列でも可。
– ( )で囲まれている。
– ※イテラブルでないものはtupleにできない(intやfloatなど)

見た目や性質はlistと類似。追加・削除など要素をいじれない点などが異なる。

###タプルの作

元記事を表示

【python】if __name__ == ‘__main__’:とは?

#【python】if \_\_name\_\_ == ‘\_\_main\_\_’:とは?

.pyファイルに記述されている`if __name__ == ‘__main__’:`の役割と処理について。

##何をしているか
・**ファイルをimportしたときに、if以下は実行しない。**

デフォルトとして、.pyファイルをインポートすると、ファイルの中身が実行される。

`if __name__ == ‘__main__’:`以下に記述することで、import時の実行を回避できる。

##原理
変数 `__name__`が、importした場合と、ファイル実行した場合で挙動が異なる性質を利用。

###「\_\_name\_\_」

– **importした場合は “モジュール名”** に置き換わる。
– **ファイルを実行した場合は、”__main__”**に置き換わる。

ファイル実行時のみ、if文の条件がTrueになるので、中身が実行される。

“`python:test.py
print(__name__)

#出力
__main__
“`

#

元記事を表示

Python超初心者の超初心者のためのPython #Hello World

環境
windows7
Visual Studio Code
chrome

この記事はプログラミング初心者かつPython初心者に向けて記述します。

#Hello World!!!
まずは決まり文句”Hello World”です。
この呪文をPC画面にPythonを使って表示させるのは、テキストエディタというメモ帳のプログラミング版を使用します。
私はVisual Studio Code(以下VS Code)を使ってますが、使用できるまでの環境設定にゆうに20時間を超えています。
VS CodeをHTML&CSSで使っていましたが、Pythonで使うとなると一苦労・・・。

なので、まずは簡単なGoogle Colaboratoryをテキストエディタとして使用するのが早いです。
なおgoogle colaboratoryの使い方は以下のリンク先がわかりやすいです。
[Google Colaboratoryの始め方](https://gammasoft.jp/blog/google-colaboratory-for-learning/)

さあ、私でも今では朝飯前のHello

元記事を表示

.NETとPythonで合成文字の前方一致を比較

.NET Framework と Python で前方一致の挙動が違うことに気付きました。Unicode の等価性に関係します。一部 Mono の挙動にも注意が必要です。

# 正規化

Unicode には濁点やアクセントなどの付加記号が付いた文字を、まとめて 1 文字(合成済み文字)として扱う方法と、ベースの文字(基底文字)と記号(結合文字)とを分離して扱う方法があります。どちらかに統一することを**正規化**と呼びます。

* [Unicode正規化 – Wikipedia](https://ja.wikipedia.org/wiki/Unicode%E6%AD%A3%E8%A6%8F%E5%8C%96)

> Unicodeの正規化手段の基礎は、文字の合成と分解という概念である。文字の合成とは、基底文字と結合文字の組み合わせによる結合文字列を、単一の符号位置である合成済み文字にする手続きである。

身近な例では濁点付きの仮名が対象となります。

* “か” U+304B + “゛” U+3099 ⇔ “が” U+304C

【参考】 [Unicodeでは濁点や半濁点を別扱いして

元記事を表示

特異値分解の計算方法を手順ごとにまとめてみた

## はじめに
– E資格の数学問題で何かと話題の「特異値分解」。数式や社会への応用例については多くのサイトで解説されていますが、手計算でどうやって解いてくのか?を解説したものはあまり見かけないように思います。
$$
A = U \Sigma V^T
$$
– なので、E資格数学の登竜門ともされる(と個人的に思う)特異値分解の手順を、自己流ながらまとめました。ここおかしい!というところがありましたらツッコミをお願いします。
– この記事は数学の計算過程を書いています。線形代数の行列に関する知識(ベクトルの内積、行列の和、積、行列式、固有値、固有ベクトル)に関する知識が必要です。

## 特異値分解の手計算の手順
特異値分解は線形代数の様々な計算法を使用します。これら1つでも間違うと正解を得ることができないので、
以下のステップごとに、着実にマスターしていく必要があります。

1. ***$U$、$\Sigma$、$V$の行列の形、大きさを把握する***
– $\Sigma$は$A$と同じ、$U$の大きさは行の個数の正方行列、$V$の大きさは列の個数の正方行列
1. ***

元記事を表示

PythonとOpenCVで画像をアスキーアート化するプログラムを作った

# はじめに
先日、[ASCII Camera](https://andrei.codes/ascii-camera/)という面白いサイトを見つけました。
![picture_pc_3c309a4cbd82ecc52c545a04da630a0b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624097/14540b98-c93e-5269-2f32-c89e164881d5.png)
こんな風に、ブラウザからカメラ映像を取得してASCII文字列に変換してくれます。

このぐらいだったらもしかして自分で作れるんじゃないかと思ったので、画像をアスキーアートに変換するプログラムを作ってみることにしました。

# 仕組み
仕組みとしては、以下のようになります。

1. 画像をグレースケールに変換する
2. 各ピクセルの色の濃さを取得し、それに応じて文字を決定する
3. 列ごとに改行する

PythonとOpenCVを使えばこれらの処理をかなり簡単に行えます。

## グレースケールに変換
読み込む画像のパス

元記事を表示

matplotlib.pyplot のメモリリークの対処法

以下の様に描画用のプロセスを別途作成・終了させればメモリリークを防げます。

“`python
from multiprocessing import Pool
import matplotlib.pyplot as plt
import numpy as np

# プロット用のメソッド
# plt.clf()・plt.close() をしなくてもプロセス終了時に自動でメモリが解放される。
def plot(args):
x, y = args
plt.plot(x, y)

# プロットする値
x = np.arange(1e7)
y = np.arange(1e7)

# プロット用のプロセスを作成し、その中で描画処理を行う
p = Pool(1)
p.map(plot, [[x,y]])
p.close()
“`

実際にメモリが解放されているかは以下のコードで確認できます。

“`python
from multiprocessing import Pool
import matplotlib.pyplot as plt
import numpy as

元記事を表示

PythonでJSONファイルを作成する方法

## はじめに
Pythonのjsonモジュールでは、JSONファイルを読み込んだり、JSON形式のオブジェクトを書き込むことはできるが、JSONファイルを作成することはできない。JSONファイル作成を、必要に迫られ実装したので、メモとして残しておく。

公式ドキュメントより
https://docs.python.org/ja/3/library/json.html
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489653/6d11c838-e4a5-bd6c-c70f-e07f62173eba.png)

## 実装方針
– 書き込みたいJSONファイルが空なら [ を挿入する
– JSON形式のオブジェクトを挿入する
– 末尾に ] を挿入する
– 次に挿入するとき、末尾が ] なら , に置き換える

## 実装例
以下の3ファイルは同階層にあるものとする

“`python:json_make.py
import json
from pathlib import Path

元記事を表示

Pythonでクラス変数とインスタンス変数を取り違えてハマった

Python でクラス変数をインスタンス変数と取り違えたため、思ったように動かなくてハマりました。参考までにメモしておきます。

# 概要

よくあるミスのようで、同じ話題を扱った記事があります。

* [Pythonではインスタンス変数をクラス定義直下に書いてはいけない(戒め)](https://qiita.com/kxphotographer/items/60588b7c747094eba9f1)

ポイントはこのコメントに集約されています。

> pythonの挙動は、self.odds を参照するとき、まずインスタンス変数を参照して、なければクラス変数を参照します。

別の記事でも注意喚起されています。

* [Pythonのクラス変数とインスタンス変数 | UX MILK](https://uxmilk.jp/41600)

> クラス変数にアクセスする場合は、特別な理由がない限り「インスタンス.クラス変数」や「self.クラス変数」のようにアクセスすることは避けるべきです。Python ではインスタンス変数をインスタンスオブジェクトから生成することができ、意図せずクラス変数

元記事を表示

【FX】Dockerを使ってPythonでoanda-APIを叩く

## 概要
FXの取引といえば基本手作業でぽちぽちやるものだ。
これをPythonを使ってプログラミングで自動で決済したりできると凄い楽しいことになる。
機械学習を用いて未来の価格を予測したり、決められた時間や決められたロジックで自動売買の設定だってできる。
ここではそのための最初の一歩として、 Dockerからapiを叩いてPythonを使った決済ができるようになる を目標とする。

## 前提となる環境
– oandaに口座(デモ口座でもよし)を作り、APIのtokenを発行する
– docker, docker-composeを使える環境

##oandaの設定
Pythonなどのプログラミング言語を用いてFXの売買をするためにはAPIを叩かなければいけない。
SBI証券とかDMMFXなどFXをできる業者はいっぱいあるが、国内でFX用のAPIを提供しているところはoandaくらいなので、まずはoandaで口座を作る。
バグとかがあったら大変なので、最初はデモ口座でいいだろう。15分くらいあればちゃちゃっとできる。
oanda APIを使ったFXの取引についてはQiitaだと以

元記事を表示

Talking Head Anime from a Single Imageを使ってバ美肉しようとしたらハマった点とその解決

## はじめに
1枚の画像からVTuberになれるスーパーツール`Talking Head Anime from a Single Image`を使って、VTuberになろうとした時にハマった点と、その解決をしたやり方を書いていきます。

(↓実際に遊んでいる様子)

元記事を表示

pythonのアンダースコア(_)ってなんのためにあんの?

# 結論
1. Return値を無視する
* 関数の名付けで使い方を区別する。
* 数字を読みやすくする。
* インタプリタで最後に表示された値を代表する。

そして、これらを使いこなすことで、「**俺、pythonすげぇ知ってるんだぜ**」感を友達に見せつけることができるようになるぞ!

# 内容

# 1. Return値を無視する

これはおなじみで、よくみますよね。省略。

# 2. 関数の名付けで使い方の区別
これが色んなパターンが出てきてよくわからんとなった。

## a. _function(x): #関数前に一つ

“`
def _single_leading_underscore(x):
return something
“`

関数前に一つアンダースコアを付ける事により、関数を”内部用”に定義できる。つまり、ほかのpythonファイルからimportした時にこの関数は読み込まれない。ちょっと計算するけど煩雑になるから関数化しとこ~くらいのモチベーションでこれが使われる。

## b. function_(x): #関数後に一つ

“`
def sin

元記事を表示

Confusion Matrixについて

## この記事について
Confusion Matrixについてまとめる

## Confusion Matrixとは
クラス分類において、評価指数の1つ。

| | Predicted Negative | Predicted Positive |
|:—:|:—:|:—:|
| Actual Negative | True Negative | False Positive |
| Actual Positive | False Negative | True Positive |

Precision = TP / (TP + FP)
Recall = TP / (TP + FN)

“`python
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
“`

元記事を表示

ANDゲート、NANDゲート、ORゲートを実装してみた その1【ゼロから作るDeep Learning】

# はじめに
オライリーの書籍「ゼロから作るDeep Learning」を使って勉強しています。
せっかくなので、書いたコードを記録していきたいと思います。

## 環境
Windows10
Python3.7.3
Jupyter Notebook

### 閾値θを使ったANDゲートの実装

コードです。ここは書籍のままです。

“`python
def AND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta: return 0 elif tmp > theta:
return 1
“`

出力です。

“`python
AND(0,0) #0が出力
AND(1,0) #0が出力
AND(0,1) #0が出力
AND(1,1) #1が出力
“`

期待通りの結果が得られました!

### 閾値θを使ったNANDゲートの実装

コードです。パラメータをマイナスに変えてみました。

“`python
def NAN

元記事を表示

Python で形態素解析 の速度比較 / janome, sudachi, ginza

# Python で形態素解析 の速度比較
シンプルに分かち書きだけを期待して

## 比較対象
pip でサクッとインストール終わるヤツ

– janome
– sudachi
– ginza

## 準備
– `pip install janome`
– `pip install sudachipy`
– `pip install “https://github.com/megagonlabs/ginza/releases/download/latest/ginza-latest.tar.gz”`

参考:pip freeze

“`ini:reqirements.txt
blis==0.4.1
catalogue==1.0.0
certifi==2020.4.5.2
chardet==3.0.4
cymem==2.0.3
Cython==0.29.19
dartsclone==0.9.0
ginza @ https://github.com/megagonlabs/ginza/releases/download

元記事を表示

韻を扱いたいpart8(一旦終了)

##__内容__
前回の修正と活用法、カウント表現を行ってみる。母音の並びを単語に見立てる部分で重複があったため、重複がないように修正する。その後は前回同様テキスト中の文章をバイナリ表現で表し、コサイン類似度の高いものを表示しようと思う。カウント表現についても同様に行ってみる。
##__修正点__

“`python
from pykakasi import kakasi
import re
import numpy as np
import pandas as pd
import itertools

with open(“./test.txt”,”r”, encoding=”utf-8″) as f:
data = f.read()

#単語リスト。母音のみ使ってできる2文字から4文字の単語。775種類
word_list2 = [i[0]+i[1] for i in itertools.product(“aiueo”, repeat=2)]
word_list3 = [i[0]+i[1]+i[2] for i in itertools.product(“aiueo”,

元記事を表示

OTHERカテゴリの最新記事