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

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

_と__について

メモ程度に記載します。

## 「_関数」について

Pythonには事実上のPrivate属性が無いですが、_で関数を内部用に定義できる

“`module/func.py
def _func():
return something
“`

“`module/__init__.py
from .module import func
“`

上記の場合、

“`test.py
from module import *

print(func._func())
“`

“`
ImportError: cannot import name ‘func’ from ‘module.func’
“`

from M import *  では一つのアンダースコアで始まる関数はインポートされません
しかし、

“`module/func.py
class Net():

def _func(self):
return ‘something’
“`

“`module/__init__.py
from .module import Net
“`

上記の場合、

元記事を表示

Pythonで英語の音声対話を実装しよう[オフライン]

##pocketshinxについて

pocketsphinxは、オフラインでの英語の音声認識を可能にするモジュールです。
[pocketsphinx導入方法, 使い方はこちら](https://qiita.com/hir-osechi/items/1749f83d9bca04a06b74)
環境構築は本ページでも確認しますので、飛ばしてもらっても大丈夫(?)です

##独自辞書を用いた音声認識(speech to text)

####環境
ubuntu 18.04
python3

—-

####環境構築
gitにサンプルをまとめたので、cloneして使って下さい。
“https://github.com/hir-osechi/pocketsphinx_sample”

“`sh:
git clone https://github.com/hir-osechi/pocketsphinx_sample.git
“`

この中には、pocketshinx,svoxpicoを使うコードが入っているので、
これらがインストールされていなければ以下を実行して下さい.

“`sh

元記事を表示

[Python] ABC175D

Pi != i および P1, P2,・・・,PNは全て異なるという条件より, どこからスタートしてもスタート地点に必ず帰ってくるループとなる.
N≤5000より, すべてのスタート地点についてループ経路を求めても最悪O(N^2)となり, なんとか間に合いそう.
よって, 以下スタート地点sとして考える. 各sについて以下のStepを回す.

###Step1
1番目の点 → 2番目の点 →・・・→ s(最後の点) のループについて, 得点の累積和Sを求める.
###Step2
Kとlen(S)の大小で場合分けして, 得点の最大値を求める. 場合分けは以下の通り.
####Step2 – ケースA: K≤len(S)のとき:
ループを1週しないため, 到達可能な点でのSの最大値が答えとなる.
####Step2 – ケースB: K>len(S)のとき:
S[-1]≤0のときは1週以上するメリットがないため, 1週するまでの最大値、つまりSの最大値が答えとなる.
S[-1]>0のときは回れるだけ回りたいところだが, 実は1周少なく回った方が得点が高くなることがあるため, 両方の場合で

元記事を表示

Pandas 基礎

Pandas 基礎まとめ

SeriesとDataFrameについて

##Series

Seriesとは. 1次元の値のリスト

series_spreadsheet.png

dict型のオブジェクトをSeriesにいれるとkeyをindexとして表現します。

“`
data = {
“Name”:”Jhon”,
“Sex”:”male”,
“AGe”:22
}
pd.Series(data)
>
Name Jhon
Sex male
AGe 22
dtype: object
“`

Numpy arrayからSeriesを作成
“`
array = np.array([22,31,42,23])
age_series = pd.Seri

元記事を表示

magenta_sessionのバージョンを上げてGPU対応したくてやった話

## tensoflowに興味があったし音楽の自動生成が面白そうだった

Pythonを知らなければtensorflowは技術記事で見かける機械学習のライブラリってイメージでした。触ったことがなく[magenta](https://github.com/magenta/magenta)というを知って触ってみようと思いチュートリアルのようなものを探すと以下の記事が見つかりました。

[人工知能時代の音楽制作への招待 – Google Magenta 解説&体験ハンズオン (自習編) –
](https://qiita.com/icoxfog417/items/f198f2e030d861d7bbf4)

ちょうどいいじゃん!と思って触るとcpuでのみの学習しか対応しておらず「機械学習はGPUの方が速度でるんでしょ?」という素人考えでDockerの勉強も兼ねて対応させることにしました。

forkしてGPUに対応させたリポジトリです。
[MizoTake/magenta_session](https://github.com/MizoTake/magenta_session)

##WSL

元記事を表示

【Python】配列内の要素を全て結合

Pythonでスクレイピングを勉強しています。1ページごとの値を取得したかったのですが、class名などが被りいらない値まで取ってきやがりました。そこで今回は、「1ページ毎の配列をとりあえず全部結合させて、正規表現でいる部分だけ略奪作戦」をやっていきたいと思います。

## 工程

1. 配列内の要素を全て結合させる
1. 結合させたやつに、正規表現をかける
1. 正規表現にmatchした部分だけ採取

この**Japan**だけが欲しい

“`py3
list = [‘非表示’, ‘非表示’, ‘非表示’, ‘非表示’, ‘非表示’, ‘Japan’, ‘非表示’]
“`

## 配列内の要素を全て結合させる

“`py3
list_join = (”.join(list))
print(list_join)
# 非表示非表示非表示非表示非表示Japan非表示
“`

## 正規表現をかけ、いる部分だけ採取

“`py3
list_join = (”.join(list))
compile = re.compile(‘[a-zA-Z]+’)
print(”.join

元記事を表示

はじめてのPython3 ~繰り返しのはじまり編~

# はじめに
注意点などは[こちら](https://qiita.com/kashun0410/items/4113051964d5a1cd0bb5)を参照してください。

# 繰り返し処理
歴史は繰り返される。
単純なプログラムも繰り返させよう。
## for inによるループ処理
単純な繰り返しの処理。

“`
for カウンタ変数 in 繰り返す範囲:
繰り返し処理
“`

※ コロンを忘れぬようお気をつけて

#### 例
“`
for i in range(3):
print(“hello world”)

“`
============
※ 実行結果

hello world
hello world
hello world

============

#### 繰り返す範囲の range 関数
range 関数は引数に指定した開始数から終了数までの連続した数値を要素として持つ range 型のオブジェクトを作成する。
※ range(a,b,x):a に指定した数値から順に b に指定した数値だけ足していき、 x に指定した数値を超えない範

元記事を表示

FastAPI + uvicorn + NginxでWebページを表示(Jinja2によるTemplates機能 )

# 0. はじめに

– 「[FastAPI + uvicorn + nginxをdocker-composeで構築](https://qiita.com/junkor-1011/items/02ed76b94c60deba8282)」で作ったものを元にして、[Jinja2](https://jinja.palletsprojects.com/en/2.11.x/)によるTemplates機能などを使ってWebページの雛形を作る
– 前に[Flask](https://flask.palletsprojects.com/en/1.1.x/)などを試しに使っていたことがあり、TemplateやStaticファイルの配信を同じような感じで出来るか調べたかった

# 実践:Webページ機能追加

※前提:「[FastAPI + uvicorn + nginxをdocker-composeで構築](https://qiita.com/junkor-1011/items/02ed76b94c60deba8282)」の状態からスタートする

## 1. Packageの追加

– Tem

元記事を表示

【Cloud Functions】Storageに置かれたGZIPファイルを自動解凍

# 前説
* Google Cloud StorageにGZIPファイルが追加(更新)されたタイミングで、自動で解凍させたい
* [Google Cloud Storage APIのリファレンス](https://googleapis.dev/python/storage/latest/index.html)を探しても、GZIPの解凍に関する記述が見当たらない
* 仕方なく、[PythonのGZIPライブラリ](https://docs.python.org/ja/3/library/gzip.html)の活用を模索

## ソース
先人が落としてくれたZipファイルを解凍するコード(参考リンク-3)を改造しました。
Cloud Storageトリガーで起動するCloud Functions(Python 3.7)で、単一ファイルをGzip圧縮している前提です。

“`python:main.py
from google.cloud import storage
import io,gzip

def hello_gcs(event, context):

client =

元記事を表示

Scipyでモード解析における一般固有値問題を解く

機械振動学におけるモード解析では、剛性行列Kと質量行列Mから一般固有値問題

“`math
K\{\phi_i\}=\omega_i^2 M\{\phi_i\}
“`

を解く必要があり、これは両辺に行列が2つある一般固有値問題と呼ばれる。なお、

“`math
A\{\phi_i\}=\lambda \{\phi_i\}
“`

は標準固有値問題と呼ばれる。一般固有値問題を解くには、両辺に左から$M^{-1}$を掛けて標準固有値問題にして解く方法もあるが、scipy.linalg.eighを使えば、いきなり解くことができる。なお、K,Mは実対称行列なのでscipy.linalg.eigでなくscipy.linalg.eighの方を使う(なぜだかわからないがscipy.linalg.eigだとうまくいかない)

“`python
w, v = scipy.linalg.eigh(K, M)
print(“eigen value:\n”, w)

omega = np.sqrt(w)
# 昇順にソートする
omega_v = [[row,

元記事を表示

【競プロ練習】AtCoder Beginner Contest 175をやってみた(A~C)

AtCoder Beginner Contest 171に参加しました。
A~C問題まで解けました。そのときの思考を記します。

# A – Rainy Season
長さ3の文字列からRの連続する個数を返す。ゴリ押しした。

“`Python
S = input()
if ‘RRR’ in S:
print(3)
elif ‘RR’ in S:
print(2)
elif ‘R’ in S:
print(1)
else:
print(0)
“`
# B – Making Triangle
N本の棒の長さリストLが与えられる。このうち3つを選んで、条件をみたす組み合わせの個数を返す。

組み合わせを総当りで調べたが、そのためにitertools.combinationsを使用した。
使い方を競技中に調べるという……。
itertools.combinations(N,r)
リストNからr個選ぶ組み合わせのリストを返します。
例:combinations(range(5),3)→(0,1,2),(0,1,3),(0,1,4),(0,2,3),(0,2,

元記事を表示

PythonからExcelファイルをインポート(DBへ登録編)

#概要
ExcelファイルをPythonで解析してDBへ登録します。
将来的にはSlackの特定チャネルにアップロードされたExcelファイルを裏でDBへ登録する処理に使います。

#事前にインストールするパッケージ
以下のパッケージをインストールします。

“`bash
pip install xlrd #Excelのライブラリ
sudo apt-get install mariadb-server-10.0 #mysqlDBをインストール
apt-get install python-mysqldb #mysqldb接続用のライブラリをインストール
“`

#Mysql接続確認
最初はパスワードが指定されてないので、Rootアカウントで接続します。
以下のコマンドで接続できることを確認します。

“`bash
pi@raspberrypi:~ $ sudo mysql -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 44
Serve

元記事を表示

Python bottleの導入と使い方・ログイン機能付きの簡単なwebサーバを立ててみる

## はじめに
Rasperry pi で IoT を作りたいと思っていたんですが、web 系・ソフト系の知識があまりないので困っていました。
Web アプリケーションを Python で実現する場合は Django や Zope, Pyramid などのフレームワークが使用されていますが、これらは多くの機能を備えている反面、自分のような初心者にはレベルが高すぎます。

そこで、Bottle という Python の軽量フレームワークを勉強することにしました。
フレームワークが1つのファイルに収まっているため、初心者が勉強するのにはうってつけらしいです。

__◎今回の目的__
まずは PC 環境で Bottle を使用して、Bottle の基本的な使い方について学ぶ。
ログインフォームつきのサーバを立てるところまでの備忘録

__◎環境__
WSL Ubuntu 18.04.3 LTS

## 概要
1. Bottle 導入
1.1. `bottle.py` のダウンロード
1.2. 動作確認
2. ルーティング
2.1. 静的ルーテ

元記事を表示

PythonでABC175のA,B,Cを解く

### はじめに
毎回言ってる気がしますが、おひさしぶりです。4連続冷えを防ぐことに成功しました。

### [Rainy Season](https://atcoder.jp/contests/abc175/tasks/abc175_a)
1WA

**考えたこと**
Rが連続でいくつあるかをカウントします。

“`python

s = input()

if ‘RRR’ in s:
print(3)
elif ‘RR’ in s:
print(2)
elif ‘R’ in s:
print(1)
else:
print(0)
“`
if文は上から処理されていくので順番に処理されていくので、順番に注意しましょう。私はこれでWAでした。

### [Making Triangle](https://atcoder.jp/contests/abc175/tasks/abc175_b)
**考えたこと**
三角形の存在条件をやるだけですが、問題文を誤読して時間がかかりました。$N$が小さいの全探索します。

“`python
n = int(in

元記事を表示

pythonで2d CADファイル「.dxf」を作成[ezdxf]

## .dxf??

CAD(機械などの設計図を描くソフト)では様々なファイル形式が使われています。「.dxf」はその内の1つです。

他にもファイル形式はありますが、よく使われる「.dwg」であればAuto CAD等の特定のソフトでしか読み込むことができません。

一方「.dxf」は仕様が公開されているため、特定のソフトだけではなく、様々なソフトで読み込み、書き込みが可能です。(テキストエディタで開くと中身が読めます。)

そのため様々な企業間で図面のやり取りで使う、業界標準みたいなファイル形式なっています(多分…)。

## ezdxf??
pythonでdxfファイルを作成したり、読み込んだりしてくれるライブラリです。
https://ezdxf.readthedocs.io/en/stable/

例えばAutoCAD(結構高価)を使えば、VBAを使って自動作画のプログラムが作れたりします。

AutoCADがあるなら、こちらのほうが便利な場合も多いでしょう。

しかしながら
pythonを使

元記事を表示

[AWS] Step Functionsで遊んでみる(SAM + Lambda) Part.1

# Step Functionsとは
AWS Step Functionsとは、マイクロサービスコンポーネントをワークフロー化するためのサービスです。

## 状態
Step Functionsでは、状態によって様々な動作を制御できます。
状態には、以下のようなものがあります。

| 状態 | 制御 |
|—|—|
| Task | ステートマシンで何らかの作業をする |
| Choice | 実行の選択肢間で選択する |
| Fail or Succeed | 失敗または成功で実行を停止する |
| Pass | 入力を単純に出力に渡す、または一部の固定データを出力する |
| Wait | 一定時間または指定された時刻/日付まで遅延を提供する |
| Parallel | 実行の並列ブランチを開始する |
| Map | ステップを動的に反復する |

## Taskで利用可能なサービス
Step FunctionsのTaskには、以下のサービスを指定できます。

– Lambda
– Batch
– DynamoDB
– ECS
– Fargate
– SNS
– SQS

元記事を表示

pythonで英語の音声認識 [speech to text]

##英語を文字起こししよう
オンライン(wifiあり)での認識と、オフライン(wifi無し)での認識をそれぞれ紹介します。
####環境
ubuntu 18.04
python3

—-

##オンラインでの認識

googleを使います.
環境構築は以下のコマンドでインストールします.

“`sh:
pip3 install SpeechRecognition –user
sudo apt-get install portaudio19-dev
sudo apt-get install python-pyaudio python3-pyaudio
pip3 install pyaudio
“`

動作確認

“`python:google_test.py
import speech_recognition as sr

# get audio from the microphone
r = sr.Recognizer()

元記事を表示

matplotlibで複数画像を表示させたい。

#実行環境
[Google Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)

#Google Colaboratoryで画像を読み込む為の準備
“`python:
from google.colab import files
from google.colab import drive
drive.mount(‘/content/drive’)
img = cv2.imread(“/content/drive/My Drive/Colab Notebooks/img/Lenna.bmp”)
img2 = cv2.imread(“/content/drive/My Drive/Colab Notebooks/img/Mandrill.bmp”)
“`

#必要なライブラリの読み込み
“`python:
import cv2 #opencv
import matplotlib.pyplot as plt
%matplotlib inline
“`

#コードの確認

元記事を表示

【Python】Djangoプロジェクトに UIKit3 を導入する

#はじめに
DjangoプロジェクトにCSSフレームワークである
**UIKit3** を導入していきます。

##UIKit3
[UIKit](https://getuikit.com/) は、CSSフレームワークの1つ。
知名度ではBootstrapやFoundationにはやや劣るものの
シンプルなデザインで人気のフレームワークです。

クラス名が`uk-`で始まるように統一されており、
他のCSSとコンフリクションが起きにくいのも良いポイントです。

##UIKitをダウンロード
ダウンロードは [こちら](https://getuikit.com/) から。

zipファイルを解凍して、
今回は下記の3ファイルを使用します。

>uikit-3.5.6/
> ├ css/
> │ └ uikit.min.css
> └ lib/
>   └ uikit-icons.min.js
>   └ uikit.min.js

※UIKitのバージョンは3.5.6

##staticディレクトリを作成
プロジェクトディレクトリ直下に`static`ディレクトリを作成し、
下記のようにフ

元記事を表示

ImageHashのみで類似画像検知ができるか?

# はじめに
ImageHashのハミング距離が **0** が同一画像、 **1~10** が潜在的に似ている画像とのことだが、
ImageHashのみで類似画像検知ができるか再確認する。

# ソースコード
ハッシュは、dhushを使用する。

参考:

“`python:sample.py
import imagehash
from PIL import Image

hash1 = imagehash.dhash(Image.open(‘./images/001.png’))
hash2 = imagehash.dhash(Image.open(‘./images/002.png’))
hash3 = imagehash.dhash(Image.open(‘./images/003.png’))

print(hash1, hash2, hash3)

print(‘001.png:002.png – {}’.format(hash1 – hash2))
print(‘001.p

元記事を表示

OTHERカテゴリの最新記事