Python3関連のことを調べてみた2021年01月08日

Python3関連のことを調べてみた2021年01月08日

文字列の切れ目の一致率の計算【python】

#概要
切れ目の存在する2つの文字列において、切れ目の位置がどの程度一致しているかを計算するプログラムを書きました。
「〇〇で歌ってみた」というジャンルの替え歌において、本来の歌詞の文節の切れ目と替え歌歌詞の単語の切れ目がどの程度一致しているかを調べるために作りました。
#背景
「〇〇で歌ってみた」は特定カテゴリの名詞だけで本来の歌詞の発音を再現するように歌われた替え歌のことです。下図は童謡『ふるさと』の歌詞を駅名に置き換えた「〇〇で歌ってみた」の例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/259353/c9f890e1-b72c-28c2-c9d0-6d5d9059130f.png)
「〇〇で歌ってみた」では替え歌歌詞の単語の切れ目と本来の歌詞の文節の切れ目がどちらかというと一致するように作られる傾向があります。理由は定かではありませんが、一つにはそのほうが歌いやすいからという理由が考えられます。いくつかの替え歌において、どの程度一致しているかを調べたくなったので、2つの文

元記事を表示

Python3のプログラミング関数 個人的まとめ

#初めに
これは、競技プログラミングなどで使用するPython3のライブラリや関数の個人的な備忘録です。

### 順になっているリスト
“` python3:
# startからendまでのリスト
# [1,…,100]が欲しいなら、start=1,end=100
li = list(range(start,end+1,step))
“`

### リストの要素を反転
“` Python3:
li.reverse()
# または
li[::-1]
“`

### リスト内の要素の合計
“` Python3:
sum(li)
“`

### リストをソート
“` Python3:
# 元のリスト昇順をソート
li.sort()
# 降順
li.sort(reverse=True)

# リストを昇順にソートしたリストを返す(元のリストは変更されない)
li_2 = sorted(li)
# 降順
li_2 = sorted(li,reverse=True)
“`

#自作の比較関数でリストをソート
“` Python3:
from functools import

元記事を表示

極座標で等高線図を作成(Contour maps in polar coordinate)

# はじめに
 Pythonで極座標形式の等高線図を描く方法を紹介します.[matplotlibの公式ドキュメント](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.contour.html)を参考にしたので,詳しくはそちらをご覧ください.

 本記事では,描き方のサンプルとして海の波の様子を表示させます.従って,変数は波の高さ・周波数・波向きの3つです.極座標形式の等高線図の周方向が波向きを,中心からの距離が周波数を,等高線の色が波高さを示します.
# 本編
## 準備
まずはモジュールのインポート

“`python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
“`

続いては表示させたいデータをインポート.
本記事では,あらかじめ用意したcsvファイルを読み込みました.ファイルは25行36列のデータです.行は周波数を表し,列は波向きです.

“`python
a =

元記事を表示

PythonでProtocolを使って静的ダック・タイピング

この記事はニフティグループ Advent Calendar 2019の14日目の記事です。
昨日は@mito1296さんの「Terraformで立てたec2インスタンスをAnsibleで管理してみる」でした。
同様の問題に以前悩まされたことがあったのでタグ付けは非常に綺麗な解決方法だなと感心しました。
機会があれば、うちのチームでも導入したいですね!!

# TD;LD
Pythonは型安全で無いので大きめのプロジェクトになると心理的な安全が担保できないので敬遠していました。
しかし、Python3.5以降typingが導入されmypyと組み合わせることで、少し大きめのプロジェクトでもコーティングする際に心理的な安全を得ることができるようになったので中規模の開発に採用できるようになりました。

今回は、python3.8から`typing.Protocol`が正式に追加されたようなので紹介してみます。

# typing.Protocolとは

詳しくは、以下を見てください。
https://docs.python.org/ja/3/library/typing.html#typing

元記事を表示

cv_bridgeをpython3(virtualenv)で使いたい時の解決法

## 経緯
ROSを使って色々イジイジしていたときのことです。カメラの入力ノードからRGBデータが送られてくるので、それを別のノードで受け取りたいと思い、cv_bridgeを使おうとしていました。下のような感じです。

“`python3
from cv_bridge import CvBridge

def prediction(msg):
bridge = CvBridge()
img = bridge.imgmsg_to_cv2(msg, “bgr8”)
“`
しかし、ビルドして実行してみたところ、以下のようなエラーが発生しました。

“`
File “/opt/ros/melodic/lib/python2.7/dist-packages/cv_bridge/core.py”, line 91, in encoding_to_cvtype2
from cv_bridge.boost.cv_bridge_boost import getCvType
ImportError: dynamic module does not define module

元記事を表示

cx_Freezeでjanomeを使ったプログラムをエグゼ化する。

昔、仕事中楽したいことがあってjanomeをインストールし、exe化しようとしてハマったところを思い出しながら書いた記事です。
そのためやや古い情報になっているかもしれません。
# 環境
+ Windows10 pro
+ python 3.8.5
+ Cx-Freeze 6.2
+ janome 0.4.0

#pyinstallerではだめだったのか。
調べてみると pyinstaller を使ってエグゼ化するものはあったものの Cx-Freeze はなかった、しかしGUIを入れる必要があったのでそれを搭載した状態でpyinstallerにてビルドしようとしたところ、なぜかまともにできなかったのでCx-Freezeを使うことにした次第です。

## 普通にsetup.pyを書いてビルドに成功、かと思いきや。
何やらエラーが発生、なぜならば
**Cx-Freezeがjanome の中のsysdicを引き出さずにビルドしたからです。**
しょうがないのでjanome のsysdicを手動で

exe.win-amd64-3.8/lib/janome/

にコピーして解決しました。

#

元記事を表示

【Python】icrawlerで簡単に画像を集めよう!

機械学習の画像集めにicrawlerを利用したのでその紹介です。

# icrawlerとは
pythonでwebクローリングを行い、画像を集めるためのフレームワークです。
非常に短いコードを記述するだけで画像を集めることができます。
# インストール
pip

“`
$ pip install icrawler
“`
anaconda

“`
$ conda install -c hellock icrawler
“`
# 使い方
“`
from icrawler.builtin import BingImageCrawler

crawler = BingImageCrawler(storage={“root_dir”: ‘./images’})
crawler.crawl(keyword=’猫’, max_num=100)
“`
– `root_dir`に画像の保存先ディレクトリを指定します。
– `keyword`に集めたい画像のキーワードを指定します。
– `max_num`に集める画像の枚数を指定します。
– `BingImageCrawler`の部分を他のIm

元記事を表示

python3.8でlambda-uploader使用した時にpython3.8が見つからないとエラーを吐かれた時の原因調査

##事の発端
AWSのLambda上にそれなりに複雑になる予定のpythonの関数を追加する事になったが、lambda上ではpipが使用できないため、外部モジュールを使用する関数を使用する場合、
**[一つ一つ使用している外部モジュールを\Python〇〇\Lib\site-packages\] から探し出し纏めてzip化するという賽の河原のようなおちねり作業が発生する。**
当然ながら人間は信用ならない生物のため、こんな作業を毎回手作業でやろうものなら**パンジャンドラムとマーマイトをガンギメした某ブリテンの暴走青列車(ブルートレイン)の如く事故が発生する** 

**事故は起こるさ? 事故は人間が起こすものなんだよ!**
(※加えてこの作業にとても時間が取られる)

そこでlambda-uploaderを使用し、外部モジュールの抽出作業を任せてしまうことで効率化と事故発生率を少しでも下げようと画策した。

##作業環境
– Windows10(64bit)
– python3.8(64bitインストーラ使用)3.8なのは2020/12月末時点でlambdaがpython3.8以降

元記事を表示

wxPythonのテキストボックスを使う – wx.TextCtrl

やけどしたんで自然治療しています。治るかどうかは別として。

##wx.TextCtrlとは

Pythonでは`input()`を使うことでユーザーからの入力をうけとることができます。
しかし、`input`ではコンソール上でしかできないため、GUIに入力を受け取るためのウィジェットが必要になります。それで今回紹介するのはwx.TextCtrlです!
簡易的なメモ帳もできないことはありません。いつか紹介する`wx.MenuBar`と`wx.Menu`を使うとメモ帳ができます。それについてもいつか紹介していきたいと思います。

##おくだけのコード

“`python
textctrl = wx.TextCtrl(panel, -1, “”, size=(300,-1), pos=(50,50))
“`

サイズは横300にしています。位置は適当にしているので、要変更!

##サンプルコード

“`python
import wx
app = wx.App(False)
frame = wx.Frame(None,-1,”タイトル”,size=(500,300))
panel =

元記事を表示

[Day 2]プロジェクトの生成

[前回;[Day1]Djangoの開発環境](https://qiita.com/kizashi/items/e20a7a48c2879e72ab95)
#プロジェクトの生成
今回は”mysite”という名前でプロジェクトを作成します。

“`bash
$ source venv/bin/activate
(venv)$ django-admin startproject myproject
“`

生成されたプロジェクトの中身です。

“`bash
.
|–manage.py
|–mysite
|–__inin__.py
|–settings.py
|–urls.py
|–wsgl.py
“`

#言語設定
今のままでは英語なので日本語に直しましょう。
mysiteディレクトリのsettings.pyファイルを編集します。

“`bash
$ emacs settings.py
“`

から

“`bash
– LANG=’en_us’ #となっている箇所を
+ LANG=’ja’ #’ja’にしましょう
“`

#タ

元記事を表示

[Day 1]Djangoの開発環境を整える

#はじめに
今回このようなものを作成しようと思った意図は、将来の自分がこの記事を見返して自分の成長を確認するためです。
未来の自分が何をやっているか検討もつきませんが、「昔はこういうことをやっていたよ」ということを一目でわかるようになっていればいいです。

#pythonの仮想環境の準備

最初にDjangoの開発を進めていく準備をします。
ここではすでにpython3がインストールされていることを前提をしています。

今回はvenvにて開発用に仮想環境を作ります。
今後も基本的にvnev環境で操作していきます。

“`bash
$ python3 -m venv venv
“`

場合によっては「python3」の箇所が「python」の場合もあります。
これでvenvディレクトリが作成されたかと思います。

では、作成したvenv環境を有効化しましょう。

“`bash
$ source venv/bin/activate
“`

これで有効化されました。
venv環境から出たい場合は以下のコマンドを入力すればおk。

“`bash
(venv)$ deactivate

元記事を表示

Django初心者がハマったエラーと解決法のメモ

## やったこと
pythonでwebアプリを作ってみたくて、[Udemyの初心者講座](https://www.udemy.com/course/django-3app/)をやってみました。

VScodeでソースを編集&Linuxの操作しつつ、Djangoでアプリを動かしDBはSQLiteを使っていく講座でした。

##開発環境
– VScode:1.52.1
– Django:3.1.4
– python:3.8.5

##環境構築
venvで仮想環境構築後、Djangoパッケージのインストールを行ったのにVScodeから”Unable to Import Django~”とチェックが入った。

VScodeのLinterが参照するPythonファイルが仮想環境にインストールしたものと違っていた。
設定から変更可能。選択肢が自動で表示されるがディレクトリを直接指定することも可能。

##プロジェクト設定
アプリで登録した画像ファイルが指定のディレクトリに保存されない。

プロジェクトのsettings.pyにて”MEDIA_ROOT”と設定すべき変数名を”MEDIA_DIR”と

元記事を表示

Python数学シリーズ③ 行列式(置換)

## このシリーズについて
数学の理解を深めるためにpythonで実装しながら、理解を進めてます。当分は線形代数やろうと思います。数学はそんなに好きではありませんでしたが、最近好きになってきたかもしれません。シリーズの目次は[こちら](https://qiita.com/Hiroaki-K4/items/90b2f86558ef825e5d21)。間違いやもっといい方法など、ご意見あれば気軽にコメントください。

## 行列式と置換
行列式は以下の式で定義されます。[参照元](https://mathtrain.jp/determinant)
![Screenshot from 2021-01-05 23-00-30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663246/770f8c45-35db-a66a-fa39-975a963c338d.png)
いきなり、行列式を実装しようとしても色々と知識が足りなかったので、とりあえず置換をまずやっていこうと思います。
置換は以下のように定義されます。[

元記事を表示

Pythonで環境変数にアクセスする方法

# 環境変数にアクセスする方法

### モジュールのインポート

“`
import os
“`

### 環境変数にアクセスする

Pythonでは、osモジュールの`environ`に環境変数が格納されている。
型は、マップ型です。

“`
user_name = os.environ[‘USERNAME’]
print(user_name)
“`

また、`os.getenv(key, default=None)`を使用することでも取得できます。

“`
user_name = os.getenv(‘USERNAME’, ‘dummy’)
print(user_name)
“`

`os.getenv()`は第1引数で環境変数のキーを指定します。
指定されたキーが存在していない場合は、第2引数の値を返却します。

# まとめ

環境変数にアクセスする方法は2つある。

* 1つ目は、`os.environ`を使用する方法
* 2つ目は、`os.getenv()`を使用する方法

場合によると思いますが、単純にアクセスするだけなら、環境変数が存在していない場合に任意の

元記事を表示

privateでないAPIがscikit-learn v0.24で削除されたために、unpickleできない経験をしました

scikit-learn v0.22 より前に作った`MultiLabelBinarizer`が、scikit-learn v0.24以降の入った環境でunpickleできないことを示します。
ちょっとハマった身から言えること:**pickleする環境とunpickleする環境のバージョン違いにはご注意ください**

## 環境

macOS
Python 3.7.3

## 手順

### `scikit-learn` 0.22より前

scikit-learn-0.21.3

ドキュメントのExamplesを用います
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MultiLabelBinarizer.html#sklearn.preprocessing.MultiLabelBinarizer

experiment.py

“`python
import pickle

from sklearn.preprocessing import MultiLabelBinarizer

m

元記事を表示

【最新】Google画像検索を保存するPythonライブラリの使い方&ChromeDriverをubuntuで使う

あけましておめでとうございます。

結構知ってる人が多いとは思いますが私が何度も迷うので書き留めておきます。
機械学習の際の学習データにご利用ください。

2020年8月ごろ?に検索結果の提供方法が大きく変わったらしく、Windows用ソフトの「ImageSpider」が使えなくなりました。(結構便利だったんですけどね…)
そこでこれからはPython用ライブラリの**「google_images_download」**を使うことにしました。

## インストール

### **【注意】pipではインストールしないでください!**

“`
pip3 install google_images_download
“`

PIPにあるバージョンではGoogle側の変更に対応できていないため、インストールしても使えません。
なので直接インストールします。

“`
git clone https://github.com/Joeclinton1/google-images-download.git
cd google-images-download && sudo python se

元記事を表示

Pythonのhttp.serverはRange Requestに対応してなかった

# 発生した問題
ローカルPCにサーバーを立てて、iOS Safariから動画を開いて再生しようとしたら何故か再生できない…
PCのFirefoxからは再生できるのに…

Googleで検索したらこのような記事を発見
[【HTML5】iOSのSafariでvideoタグ埋め込みのmp4が再生できないのはインターレースだから](https://deep-space.blue/web/822)
つまり動画方式が悪いんじゃねーのってこと。
ところが、インターレース方式ではなくプログレス方式なっていた。
FFmpegで再エンコードしてみたりしたが変わらず。
記事の最後の方に追記でほかの原因かもと書いてあり、この記事にたどり着く。
[【MP4】SafariでMP4動画が再生できない問題を解決](https://highmoon-miyabi.net/blog/2019/03/17_000550.html)
一番目はそもそもvideo要素すら使ってないのでありえない。
2番目、別の記事のリンクが張ってあり、タイトルが「[Safariで動画を表示する際、サーバーのHTTP Range Req

元記事を表示

pytorchを使うときの小さな高速化

# はじめに
pytorchなどを使ってモデルの学習をする際は場合によっては学習に数時間かかったり,何だったら数日かかったりすることがザラにあります.そういう場合は実行時間の定数倍の影響が大きくなってきます.例えば,計算量の定数倍が2から1に変わるだけでも,2日かかっていた学習が1日に短縮できたりします.競技プログラミングとかだと,主に計算量のオーダーの勝負になるのでそういった点では雰囲気が違いますね.今回はよく使える事例での簡単なを紹介します.

# コード例
np.arrayのリストをTensor型に変換するコードはよく見ると思います.今回はこういう場面で使える高速化になります.

“`python3
import time
import numpy as np
import torch

a = [np.ones([100]) for _ in range(100)]

# 8.44s
start = time.time()
for _ in range(10000):
b = torch.tensor(a)
print(time.time()-start)

# 0.

元記事を表示

Pythonで関数とグローバル変数の応用練習

#はじめに
閲覧していただきありがとうございます。
英語の文法は許してください。
有識者の方へ、もっとなんとかなるとかあったら優しく教えてください。

#概要
・AかBに投票をする。
・投票数の確認と投票数の初期化をする。
・終了処理をする。

#完成例
“`python
def voteA ():
global vote1
vote1 = vote1 + 1

def voteB ():
global vote2
vote2 = vote2 + 1

def count ():
global vote1
global vote2
print(“[The number of votes for A is”,vote1,”.]”)
print(“[The number of votes for B is”,vote2,”.]”)

def Initialize ():
global vote1
global vote2
vote1 = 0
vote2 = 0

op = 0
while op

元記事を表示

pythonで作る戦車ゲーム 戦車の挙動について

pythonを勉強していて、戦車の挙動をとてもうまく作ることができたので紹介します。挙動といっても戦車の移動をどうやってコードに書き起こすかという感じです。僕はpythonを利用しましたが、他の言語でも応用はとても簡単だと思います。
#環境
・Python3.9.0
・pygame(ライブラリ)を使っています。

#使う知識
・ちょっぴりのプログラミング知識
・高校物理(力学)

高校物理と言ってもとても簡単なものなのでご安心ください。
***
今回は戦車の動きを作るのにあたって、二つのステップを作りました。それは**速度**と**方向**です。それとこのゲームはwキーで上、aキーで左、dキーで右、sキーで下に動くようにしています。

#速度(位置)編
速度とは何か、と聞かれたらおそらくほとんどの人が「単位時間あたりに進む距離」と考えると思います。そうです。これをコードに起こしてしまうのです。物理で習う式は
“`
x=a*t^2+b*t+x_0
“`
という感じですよね。tは時間、x_0は最初の位置、そしてa,bは定数です。
これをプログラミングで表すにはどうすればよいのか。大前

元記事を表示

OTHERカテゴリの最新記事