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

Python関連のことを調べてみた2020年11月30日
目次

Python-LEGO Mindstormsでキー入力操作をしてみる

今回の記事は筆者が細部まで理解できていないためひとまず備忘録として残す。
順次記載を加えていく予定。

今回はキーボードでLEGO Mindstorms EV3(以降EV3)を操作するプログラムを作成していく。
Pythonでのキーボード入力では`input`など様々なメソッドやライブラリがあるが、今回はプログラムがキー入力待ちをせず動的にキー入力を判断させたいため`termios`や`fcntl`というものを利用していく。

キー入力によって車型のEV3をラジコンのように(正確には違うが)操作できるようプログラムを作成する。

## EV3について
教育版 [LEGO® MINDSTORMS EV3](https://afrel.co.jp/product/ev3-introduction)

## 本記事内での環境
* PC
Windows10
Python 3.7.3
開発環境 VisualStudioCode

* EV3
ev3dev
[APIリファレンス](https://ev3dev-lang.readthedocs.io/projects/python-ev3d

元記事を表示

Python-LEGO Mindstormsのセンサーをスレッドで非同期処理する その2

今回は[前回](https://qiita.com/Hiroki-Fujimoto/items/6d0f21d06b442f1e2535)LEGO Mindstorms EV3(以降EV3)のセンサー複数処理に加えライントレースをスレッドに加えなおかつ、センサーがしきい値に達した際にはライントレースを停止しプログラムを終了する処理をさせていく。一つのスレッドが終了したときに他のスレッドも連動して終了させるために`threading`の`Event`メソッドを利用する。

## EV3について
教育版 [LEGO® MINDSTORMS EV3](https://afrel.co.jp/product/ev3-introduction)

## 本記事内での環境
* PC
Windows10
Python 3.7.3
開発環境 VisualStudioCode

* EV3
ev3dev
[APIリファレンス](https://ev3dev-lang.readthedocs.io/projects/python-ev3dev/en/stable/spec.html)

環境構築や

元記事を表示

pythonのクラスを使いこなす。主要コマンドまとめ(クラス定義、継承、モジュールの読み込みまで)

#pythonのクラスを使いこなす。主要コマンドまとめ(クラス定義、継承、モジュールの読み込みまで)

pythonのクラスを使うために必要な定義の仕方、命名ルール、注意点などのまとめ。

1. [クラスの定義](#クラスの定義)
2. [インスタンスの生成](#インスタンスの生成)
3. [インスタンス変数](#インスタンス変数)
4. [\_\_init\_\_メソッド](#__init__メソッド)
5. [\_\_init\_\_メソッドを使ってインスタンスを生成](#__init__メソッドを使ってインスタンスを生成)
6. [メソッドの作成と呼び出し](#メソッドの作成と呼び出し)
7. [クラスの継承](#クラスの継承)
8. [オーバーライド](#オーバーライド)
9. [継承したクラスで親クラスのメソッドを呼び出す](#継承したクラスで親クラスのメソッドを呼び出す)
10. [別ファイルのクラスを読み込む](#別ファイルのクラスを読み込む)
11. [モジュール自体を読み込んだ場合](#モジュール自体を読み込んだ場合)

##クラスの定義
`class

元記事を表示

【PostgreSQL】『対向(peer)認証に失敗しました』―psqlログインできない際の対応

#### 背景
以下の環境でWEBシステムを構築し、EC2上のPstgreSQLへマイグレーションを試みた際に、『対向(peer)認証に失敗しました』というエラーが発生。
その対処を以下に記します。

先人たちの知恵をお借りするなどして解決できたことを、この場をお借りして感謝するとともに、大変恐縮ですが自分のメモとしても、こちらへまとめておきます。

#### 環境
– AWS EC2 (Amazon Linux 2)
– Python 3.7.9    ※2020/11/29時点のAmazon Linux2でのデフォルト
– Django 3.1.3
– PostgreSQL 11.5  ※同上
– Nginx 1.12     ※同上
– Gunicorn
– Putty 0.74

### 1.現象
EC2上のPostgreSQLへ、pythonの仮想環境(venv)より`python manage.py migrate`を試みた際に下記エラーが発生。
この時点までに、PostgreSQLでちゃんとユーザーにログイン権限とパスワードを設定しています。

“`:コマンドプロンプト

元記事を表示

flake8の使い方とオプション

# falke8とは?

Pythonのコードチェッカーツール(ライブラリ)です。

https://flake8.pycqa.org/en/latest/

flake8を使うことで、Pythonコードの問題点を簡単に、そして効率的に見つけることができます。

例えば、pep8に準拠していないcodeやunused codeなどがあった場合、flake8によるチェックを行うことで、「どのファイルの」「何行目が」「どのような違反を犯しているか」を示してくれます。

project rootで実行すれば、そのprojectにpep違反を犯しているファイルがあるかどうかを一目でチェックすることができます。

なお、flake8自体は下記ライブラリのラッパーだそうです。

– PyFlakes(pyflakes : コードのエラーチェック)
– pycodestyle(pycodestyle : PEP8に準拠しているかチェック)
– Ned Batchelder’s McCabe script(mccabe : 循環的複雑度のチェック) 

# flake8の導入

flake8の導入

元記事を表示

Kali LinuxでのPythonバージョンアップ方法[upgrade-alternatives]

Kali Linux上のPythonのバージョン設定で手こずったのでメモ。

###背景
Virtual Box上にKali Linuxをインストールし、Kali Linux上でsqlmapというツールを利用していた。そこでKali LinuxのPythonのバージョンを変更しようと思ったところドツボにハマった。

####Pythonのバージョンアップ
Kali Linux上のPython系のツール(sqlmap)がうまく動かないため、バージョンが原因と思い、Python2系からPython3系へバージョンアップしようと思い立った。(この浅はかな考えがまずかった)

“`terminal:KaliLinux
┌──(root?kali)-[~/bin]
└─# which python
/usr/bin/python

┌──(root?kali)-[~/bin]
└─# which python2
/usr/bin/python2

┌──(root?kali)-[~/bin]
└─# which python3
/usr/bin/python3

┌──(root

元記事を表示

Colabで動く!!Faster-R-CNNの実装

# はじめに
実は1回目のqiita投稿でfaster-rcnnの実装は出したんですが環境やpathの類が扱いずらいものになっちゃったのでcolabで誰でもfaster-rcnnを使えるようにしよう!と思って作りました。
Kaggleやfrcnnで遊んでみたい!という方に読んでいただけると幸いです。
ちなみに1回目の記事は[こちら](https://qiita.com/ImR0305/items/22c199f85c44890e0ff8)

## 諸注意
※本記事は**PSCAL VOCフォーマットのデータセット向け**です。
私はBDD100KというデータセットをPascalVOCフォーマットに変換して学習を行ったためclassラベルがBDD100Kのものとなっています。
(PSCAL VOCフォーマットであればpathを変えれば独自データの学習も可能です。)

##仮にローカルで動かす際の実行環境
win10
python 3.6
pytorch 1.6.0
torchvision 0.7.0
CUDA 10.1

## コード&簡易データセット
すべてのコードは[github](

元記事を表示

pandasのリファレンスをながめてみた -ちゃんとリファレンスは読もうという話-

## はじめに
写経していろいろ試してみた中でpandasの使い方をもっとうまく使えるようになりたいという動機が生まれたので応用するフェーズへ移行するために、できることの範囲や境界を認識するためにながめてみました。

## URL
– pandas本家サイト
– https://pandas.pydata.org/pandas-docs/stable/index.html

## リファレンスながめてみた感想
### サイトについて
– 本家サイトが綺麗_(失礼)
![スクリーンショット 2020-11-30 0.54.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397770/c3b67420-0004-c848-c426-5e8d9197d59e.png)

– ユーザーガイドで何ができるかが羅列されており何ができるかということがわかり易いです
![スクリーンショット 2020-11-30 0.57.01.png](https://qiita-image-store.s3.ap-no

元記事を表示

Windowsアプリケーションの自動化-Python編①-

今更ですが、Pythonで`win32gui`と、`win32con`を使ってWindowsアプリケーションを操作する手順を勉強したのでメモ

参考URL
– [Pythonで子ウィンドウハンドルを取得する方法](http://bttb.s1.valueserver.jp/wordpress/blog/2017/09/30/python%e3%81%a7%e5%ad%90%e3%82%a6%e3%82%a4%e3%83%b3%e3%83%89%e3%82%a6%e3%83%8f%e3%83%b3%e3%83%89%e3%83%ab%e3%82%92%e5%8f%96%e5%be%97%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95enumchildwindows/)
– [CComboBox クラス|Microsoft](https://docs.microsoft.com/ja-jp/cpp/mfc/reference/ccombobox-class?view=msvc-160#showdropdown)

##構成環境
– Windows10

元記事を表示

【python】緯度経度をUTM座標に変換する

#はじめに
緯度経度、皆さん聞いたことがあると思いますが、東経・西経、北緯・南緯で表示される座標で、地球上での位置を示すものです。
しかしながら、GISを扱う上では緯度経度だけではなくUTM座標(ユニバーサル横メルカトル)が用いられることも少なくありません。
今回の記事では緯度経度の座標(地理座標)からUTM座標をpythonで取得する方法を記します。

UTMの解説についてはウィキペディアをご覧ください。
https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%8B%E3%83%90%E3%83%BC%E3%82%B5%E3%83%AB%E6%A8%AA%E3%83%A1%E3%83%AB%E3%82%AB%E3%83%88%E3%83%AB%E5%9B%B3%E6%B3%95
まあ、この中に変換式も書いてあるのですが難しいので・・・(私もよくわかっていません)

#コード
座標値を取得するには、pyprojというモジュールを使用します。
pythonでProjection(投影座標系、測地系の変換関数的な)を扱うためのライブラリ的なものです。

元記事を表示

matplotlibで日本語フォントを使うには

ちょっと調べたら「matplotlibrcの書き換え」とか、沢山方法はあるみたいですが、なんだか面倒だったので一番簡単かと思われる方法をメモしておきます。

# ttfファイルのダウンロード
[IPAexフォント/IPAフォント](https://ipafont.ipa.go.jp/old/ipafont/download.html)
準備として、例えば上のようなサイトとかからTTFフォントのファイルをダウンロードします。

# 設定
試しに、簡単な折れ線グラフにラベルをつけてみます。

“`.py
%matplotlib inline
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

font_path= “ttfファイルのPATH”
font_prop =matplotlib.font_manager.FontProperties(fname=font_path,size=20)

x = [1,2, 3, 4, 5]
y = [5, 1, 3, 2, 4]

元記事を表示

実際に競プロで効果のあったPython高速化Tips ~ACとTLEの分かれ道~

# はじめに
Pythonの高速化記事/手法は数多く存在するが、すべて対応しなければならいのか?どれが実際に有効な手法なの?
ということで、私が試してみて実際に効果のあった(ACとTLEの分かれ道になった)手法を纏めていく。
※随時追加していきます。

# Tips一覧
* 要素に重複が無く要素の順番が関係無い集合を扱う際はsetを使うこと

# 要素に重複が無く要素の順番が関係無い集合を扱う際はsetを使うこと
特にin句(含まれているかどうかの確認)をする場合はlistではなくsetを利用すべき。
listに対するinはO(n)だが、setに対するinはO(1)となるため(参考)。
この違いがモロに影響出た問題がこちら(ABC073-C)。
TLE解:https://atcoder.jp/contests/abc073/s

元記事を表示

LeetCodeに毎日挑戦してみた 53. Maximum Subarray(Python、Go)

## はじめに

無料英単語サイト[E-tan](https://your-e-tan.com/)を運営中の@ishishowです。

プログラマとしての能力を上げるために毎日leetcodeに取り組み、自分なりの解き方を挙げていきたいと思います。

#### Leetcodeとは

[leetcode.com](https://leetcode.com/)
ソフトウェア開発職のコーディング面接の練習といえばこれらしいです。
合計1500問以上のコーデイング問題が投稿されていて、実際の面接でも同じ問題が出されることは多いらしいとのことです。

golang入門+アルゴリズム脳の強化のためにgoとPythonで解いていこうと思います。(Pythonは弱弱だが経験あり)

#### 12問目(問題53)

#### 53. Maximum Subarray

#### 問題内容

> Given an integer array `nums`, find the contiguous subarray (containing at least one number) which has

元記事を表示

pythonでjsonの配列にアクセスする

pythonでjsonの配列にアクセスする時のメモ

jsonファイル

“`json:test.json
{
“section1”:{
“key”:”key1″,
“number”: [
[“a”, “b”],
[“c”, “d”],
[“e”, “f”]
]
},

“section2”:{
“key”:”key2″,
“number”: 2
}
}
“`

pythonファイル

“`python:test.py
import json

json_open = open(‘test.json’, ‘r’)
json_load = json.load(json_open)

print(json_load)
print(json_load[“section1”][“number”][0])
print(json_load[“

元記事を表示

GDALをインストールするときに「Solving environment: faild ~」となった際の対処法

#この記事は・・・
pythonで地理空間情報を扱えるGDALをインストールする際に環境設定がうまく行かなかったようで、色々と対処をしたのでその記録です。
結果として、インストール中にしばらく待つだけで解決してたかもしれないので、参考にされる方は自己責任でお願いします。

#インストールを行った環境
Anaconda3 ver.1.7.2
python 3.7.9

#不具合の内容
まずはcondaコマンドを使ってインストールを試行しました。

“`
conda install -c conda-forge gdal
“`

その結果、「Solving environment: faild ~」となってインストールが完了しません。
確か5分ほどはインストールがすすまずに同じようなメッセージが続きました。

一旦インストールを中断して対処法を探しました。

#対処法
##対処1
・Anacondaのアップデート
これは当たり前ですかね。以下のコマンドを実行してAnacondaのすべてのパッケージを最新にアップデートしました。

“`
conda update –all
“`

元記事を表示

Pythonで音声ファイル(モノラル・ステレオ両対応)のスペクトログラム描画

Pythonで音声ファイルのスペクトログラム描画をしてみました。とてもよくあるパターンではありますが、モノラル・ステレオ両対応になっているのが特徴です。

後でも述べますが、スペクトログラム描画により、人間が話しているところと、無音もしくは人間の会話周波数と異なるノイズとを、一目瞭然で区別することが可能です。例えば、話者識別の教師データを作る場合など、スペクログラムを見ることで、やりやすくなるでしょう。

なお、音声分析にはlibrosaを使う場合も多いようです。

細かい説明はコードに書かれていますが、以下概要です。

+ pysoundfileでwaveファイルを読み込み
+ 冒頭5分のみ切り出し(必須ではありませんが処理速度の関係で時間を短くしました)
+ 高速フーリエ変換
+ 7kHz未満の周波数のみ切り出し(人間の音声は3.4kHz未満がほとんどで、7kHz未満でも高音質)
+ 音圧をdBに変換(相対dB)
+ 結果を、縦軸が周波数・横軸が経過時間とし、dB値によるカラーマップを、グラフ描画(ステレオだとCHごとにグラフ描画)

以下がコードです。

“`Python
im

元記事を表示

fairseqで自分でトレーニングしたTransformerモデルをロードする

# はじめに

機械翻訳のTransformerモデルをトレーニングする機会があり,Pytorchベースのfairseqを使ったんですが,アプリ用のコードでモデルのロードにハマってしまいました.備忘録のために記事を書きます.

# fairseqとは

Facebookの人工知能研究チームが開発している,機械翻訳用のフレームワークです.Facebookが開発元ということもあり,Pytorchがベースになっています.最近はHuggingfaceのTransformersが人気でTransformerモデルを扱うならPytorchだよね,ということもあり,こちらをフレームワークとして選びました.
その他の機械翻訳フレームワークとしては,MarianNMT,OpenNMT(こちらもPytorchベース)などがあります.基本的な機能はどのフレームワークも大差ない印象ですが,論文実装のコードはfairseqが選ばれている場合が多いです.

# モデルのトレーニング方法

fairseqはドキュ

元記事を表示

docker-composeで都合の良いPython3実行環境を作成する

## 概要
* Python3の都合の良い実行環境が欲しくなったのでdockerで作成しました。
* いつも使ってるOSがCentOS7だ(ubuntuではない。。)
* ENVを切るのがめんどくさい。
* 検証のたびにサーバを準備したくない。
* 検証が終わったら消したい。

## 事前準備
* 下記をインストールし実行できること。
* docker
* docker-compose

## ディレクトリ構成

“`
./—docker-compose.yml
|–Dockerfile
|–requirements.txt # pipインストール用 利用しなければ不要
|–.env # 環境変数用 利用しなければ不要
|–src # pyファイルを配置するディレクトリ
|– sample.py
“`

## 各種ファイルの配置
### `docker-compose.yml`
“`docker-compose.yml
version:

元記事を表示

CSVをサクっとSDFに変換する

#はじめに
[SDFをサクっとCSVに変換する](https://qiita.com/kimisyo/items/bc391d451b90c819996b)の逆バージョン。

なぜこんなことをしたいかというと、SMILESが含まれたCSVの化合物データに対し、SDF形式でしか表現できない情報(3次元座標や原子プロパティ等)を付加したいため。

#仕様
– CSVの中のSMILESプロパティと、プロパティ項目を指定し、SDFとして出力
– 化学構造はSMILESを元に生成
– プロパティ項目は1つだけ指定可能(とりあえず機械学習の目的変数を1つ入れたいだけなので)

#ソース
“`csv2sdf.py
import pandas as pd
from rdkit import Chem
import argparse

def main():

parser = argparse.ArgumentParser()
parser.add_argument(“-input”, type=str, required=True)
parser.add_argum

元記事を表示

Pythonでべき乗・累乗 ** と pow() の違い

# 0. はじめに
Pythonでべき乗・累乗を計算するには2つの方法があります。
例えば $3^4$ を計算する場合、

* `3 ** 4`
* `pow(3,4)`

のどちらでも計算できます。[^1]
本記事ではこれらの違いについて説明します。

内容は3章構成で以下の通りです。

**第1章**     **とpow()の違い

この章では主に**Python初心者**を対象に2つの方法の違いについて説明します。

**第2章**     速度の比較

この章では**競技プログラミングなどの理由で計算速度を求める方**を対象に2つの方法の実行時間を比較した結果を説明します。

**第3章**     Python内部のはなし

この章では**第2章で見た結果の理由が知りたい方**を対象にそれぞれの方法でPython内部で行われていることを説明します。

# 1. **とpow()の違い
この章ではPythonの基本事項を含め2つの方法の違いを説明します。

元記事を表示

OTHERカテゴリの最新記事