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

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

Dockerでfor db Cannot start service db: Ports are not available: listen tcp 0.0.0.0:5432: bind: address already in useとなるエラーについての解決策

#エラー#
jupyterをDockerで動かそうと思った際に、以下のようなエラーが出て起動できませんでした。

“`terminal:terminal
ERROR: for db Cannot start service db: Ports are not available: listen tcp 0.0.0.0:5432: bind: address already in use
ERROR: Encountered errors while bringing up the project.
“`

エラーメッセージを読むと、5432のPort番号が使われてしまっていて起動できないということでした。

##解決策##

まずポートを占領しているアプリケーションを特定します。
今回の場合は、5432なので以下で実行していきましょう。

“`terminal:terminal
$ sudo lsof -i : 5432
Password:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NA

元記事を表示

回帰曲線との距離に応じた点の色付け

#目的

– 回帰分析で求めた直線や曲線からの距離に応じて、
プロットする点の色、濃さを変える。
– 距離の分布を他の図でも可視化する。

#コード

“`example.py
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set() #図がきれいに描画出来るおまじないらしい、私はいつも使っている

amp = 100 #振幅
frequency = 0.02 #周波数
offset = 1000 #オフセット

t = np.linspace(0,100,1000)
y_ = amp*np.sin(2*np.pi*frequency*t)+offset #理論値=回帰曲線sin
y = np.random.poisson(y_) #観測値=誤差付きsin

###メイン###
dis = abs( y_ – y )/ y_.max() #理論値と観測値の差を0.0~1.0の値にスケーリング
color_list=[ [1-9*i,0,

元記事を表示

jetson nanoにpytorch+cuda10.2の環境構築をするのはしんどすぎる【2020.09.01時点】~自作運転支援システムへの道~

## 最終的なゴール

最近の車に付いているAIを使った運転支援システム(レーンキープアシストとか,歩行者検知とか...)を見て「これいいな~~」と思いませんか?
そこで,「ないなら作ればいい!!!」と思い至りjetson nanoで運転支援システムを作成していきます.

# jetson nanoにpytorch+cuda10.2の環境構築をするのはしんどすぎる

結果から言うと,jetson nano上に最初からインストールされているcudaやcudnnなどが相当厄介でした.なので,dockerで環境構築をワンパンする作戦に変更します.

## セットアップ

ここの記事を参考にさせていただきました.
https://note.com/ushinohi/n/nde6b99739f72

## pytorchのインストール

### cudaのversionの確認

まずはcudaのversionの確認.jtopでjetsonのcudaの情報が見れます.
cudaは10.2であることが分かります.

![キャプチャ.PNG](https://qiita-image-store.s3

元記事を表示

AtCoder ABC177C Pythonで累積和を使わずに解く

#はじめに

ここ3回ほど、AtCoderに参加したばかりの初心者です。お仕事はCを書くことが多いのですが、他の言語にも慣れたくて、Pythonを使って解くことにしています。Pyhton(そしてQiitaも)初心者なので、コード上のアドバイスなどありましたら、コメントいただければ幸いです。

累積和を使わないで解答したのは、累積和というテクニックを知らず、コンテスト中にひねり出した答えだったからです。コンテスト後いくつか解説の記事を見てみたのですが、累積和を使用する解答が多く、記事として残しておくことにしました。

#問題概要

ABC177C「Sum of product of pairs」

$N$個の整数$A_{1},….A_{N}$で構成された数列が与えられる。
$1≤i

元記事を表示

在macOS使用VSCode來設定Python3.8開發環境

[本文同步Post在www.p0n2.net中](https://www.p0n2.net/2020/08/macosvscodepython38.html)

## 1. macOS 上安裝 Python3.8

如果你的macOS已經是最新版本的話,預設下應該已經安裝好Python3.8
如果沒有的話,我們可以透過Brew來安裝

“` sh
brew install python3
brew upgrade python@3.8
brew install pipenv
“`

安裝完成後可以確認一下目前的版本
“`sh
python3 –version
#Python 3.8.5
python –version
#Python 2.7.16
“`

如果你確定自己的環境中已經不會有python2的legacy code了
可以簡單編輯“`~/.zshrc“`的把python的command alias掉

“`
# set pip3 and python3 as default.
alias python=python3
alias pip=pip3

元記事を表示

【脱・大量elif】辞書型の活用によるスマートな多分岐

Pythonにはswitch文がありません。それゆえ、多分岐を実装する場合、if文と複数のelif文を書く必要があります。「もっとうまく書けないものか…」そう考えた自分は、以下のように書くようにしました。スマート!(自画自賛)

皆さんはどのように書いていますか?コメントお待ちしております!

#### ビフォー

“`python
都道府県 = “愛知県”

if 都道府県 == “新潟県”:
県庁所在地 = “新潟市”
elif 都道府県 == “富山県”:
県庁所在地 = “富山市”
elif 都道府県 == “石川県”:
県庁所在地 = “金沢市”
elif 都道府県 == “福井県”:
県庁所在地 = “福井市”
elif 都道府県 == “岐阜県”:
県庁所在地 = “岐阜市”
elif 都道府県 == “長野県”:
県庁所在地 = “長野市”
elif 都道府県 == “山梨県”:
県庁所在地 = “甲府市”
elif 都道府県 == “静岡県”:
県庁所在地 = “静岡市”
elif 都道府県 == “愛

元記事を表示

AtCoderにてPythonで再帰関数を使う時の注意点

AtCoderにて深さ優先の問題(https://atcoder.jp/contests/atc001/tasks/dfs_a)
について、以下の再帰関数を使ったプログラムを提出したところ、どうしてもREとなってしまうテストケースが存在した。

“`Python

def main():
h, w = map(int, input().split())

whole_map =[]
for i in range(h):
whole_map.append(list(input()))
s_h = -1
s_w = -1
g_h = -1
g_w = -1
seek = [[False for _ in range(w)] for _ in range(h)]

for i in range(h):
for j in range(w):
if whole_map[i][j] == “s”:
s_h = i

元記事を表示

[Python]librosaを使用してopus音源をwav音源に変換する

# はじめに
音源データ集めをしていたらopusファイルのデータにたどり着いたので,データの形をwavに統一したいため,wavファイルに変換しようというのが今回のモチベです.
面白かったので記録がてら残しておきます.

## 環境
– Windows 10 Home
– Python: 3.8.5
– librosa: 0.8.0
– ffmpeg: 4.3.1-static-64-bit

## 各拡張子の特徴
– opus
– 人間が知覚できる聴覚全体を再現することができる音源を保存している形式.
– ビットレートは固定と可変の両方あるため,ファイルの容量を小さくすることも可能
– 非可逆音声圧縮あり,人間の声の録音にも向いている(.mp3は音楽向き)

– wav
– 非圧縮音声であるため,データ数=標本化周波数 x 秒数,で簡単にデータを算出することができる
– データ構造がコンテナフォーマットのため,[ファイルヘッダの情報](http://soundfile.sapp.org/doc/WaveFormat/)が分かれば扱いやすい

元記事を表示

いのちの輝きくんの目を回してみる。

## はじめに
Pythonでいのちを輝かせるという記事(下記にリンクがあります。)があり、
どうしても目を回してみたくなりました。
参考記事の「いのちを輝かせる」画像をベースに、円座標を計算して、目を回した画像を作成し、
OpenCVを用いて動画作成と出力を行いました。

## 円座標の計算
“`
def get_coordinates(center_x: int, center_y: int, rotate_val: int, speed: int):
radius = 10
theta = (rotate_val / speed) * 2 * np.pi
x = center_x + int(radius * np.sin(theta))
y = center_y + int(radius * np.cos(theta))
return x, y
“`

## 目を回した結果

Pythonを使ったフィボナッチ数列

読んでたPython本でフィボナッチ数列に関して出てきたので調べつつメモ程度のライトな内容でまとめておきます。

なお、私の方はデザインの専門卒なので数学関係やコンピューターサイエンス関係の大学を出ている方からずると色々雑な点があるかと思われますがご了承ください。

# 使う環境

– Python 3.8.5
– VS Code

# そもそもフィボナッチ数列とは

イタリアの数学者のレオナルド・フィボナッチさんにちなんで名づけられた数列です(英語ではFibonacci sequence)。

`0, 1, 1, 2, 3, 5, 8, 13, 21…`といった値の数列になります。

最初(0のインデックス)が0、次(1のインデックス)が1、それ以降は1つ前と2
式で書くと以下のような感じになります(数列の$n$番目の値を$F_n$とします)。

“`math
F_0 = 0\\
F_1 = 1\\
F_n = F_{n – 1} + F_{n – 2}
“`

また、この数列はいわゆるデザイン方面、特に黄金比(1:1.618…)とも密接に絡んでおり、デザイン関係の本な

元記事を表示

Pythonで手書き文字認識をするまで:環境構築編

自分の備忘録として、Pythonで手書き文字認識を行うサンプルコードを動かす手順を記事として残しておこうと思います。その第一弾として、環境構築について簡単にメモを残します。

##Linux環境をWindowsに追加
私の環境はWindows 10ですが、Linux環境で開発をしたかったため、Linux環境を入れます。
Dual bootやVM wareなどの仮想マシンを立ち上げる、などの方法しか以前は知りませんでしたが、
WSL(Windows Subsystem for Linux)というものがあることを知り、導入してみます。

と言っても、Microsoft StoreからUbuntuを検索するだけで詰まることもなく導入成功です。

venvで仮想環境構築

Pythonはバージョン管理を間違えると思わぬところではまってしまうので、何かいい管理方法がないか探してみました。

そこで見つけたのが、venvです。
こちらの記事 venv:

元記事を表示

Pythonのクロージャの仕組み

## はじめに 
 Pythonのクロージャを勉強していて、

“`python
def outer():
x = 0
def inner():
print(x)

return inner

func = outer()
func() # -> 0
func() # -> 0
“`

というコードを見たとき、func()を呼び出した時になぜ変数xを用いることができるのか疑問に思ったので調べてみました。

## Pythonでのメモリ管理
 Pythonでは、参照カウンタという方法を用いてメモリ管理を行っています。
それぞれのオブジェクトは、いくつの変数から参照されているかという情報を持っていて、その値が0になる(=どの変数からも参照されていない)といずれ破棄されます。
 ということは、関数outer()の実行が終了しても変数xがfunc()内で使えるということは、func()内では何らかの方法でxを参照していると考えられます。そこで、どのように参照しているかを調べていきます。

## 関数オブジェクト
 Pythonでは関数もオブジ

元記事を表示

AtCoder Beginner Contest 177

##[A – Don’t be late](https://atcoder.jp/contests/abc177/tasks/abc177_a)

“`python:python
D, T, S = list(map(int, input().split()))

if T >= D / S:
print(‘Yes’)
else:
print(‘No’)
“`

##[B – Substring](https://atcoder.jp/contests/abc177/tasks/abc177_b)

– 1000*1000なら全探索で間に合う

“`python:python
S = str(input())
T = str(input())

Ans=1000
for i in range(0, len(S)):
Tmp=0
if i + len(T) <= len(S): for j in range(0, len(T)): if S[i+j] != T[j]: Tmp += 1

元記事を表示

jupyter lab上で画像のラベリングをする

## やりたいこと
AIに使いたい画像のラベリングをしたいが、GUIを作るのが面倒。。。と思い、
JupyterLab上でできないかーと考え、色々調べてたらできたのでそのときのメモ。
matplotで表示した画像を更新しながらinputでラベリングを入力するようなイメージ。

## 実行環境
– Python 3.8.5
– jupyter lab 2.2.2
– mac(windows10でも実行済み)

## コード
sample_imgフォルダにある画像をラベリングする。

### 準備
“`python
import cv2
import matplotlib.pyplot as plt
import os
import glob
import IPython
# 画像のpathを取得
img_list = glob.glob(os.path.join(r”sample_img”,”*.jpg”))
img_list
>>> [‘sample_img/img3.jpg’, ‘sample_img/img2.jpg’, ‘sample_img/img1.jpg’]
“`

#

元記事を表示

【総集編】8月ふりかえり

# はじめに

今月のふりかえりです。
月1で振り返り
今後は何を勉強するかを決めます。

——————————–
# 8月 1週目

2020/08/02 [Python3のノート](https://qiita.com/ymd65536/items/ed62043a6671b7529390)

——————————–
# 8月 2週目

2020/08/10 [Python3のノート](https://qiita.com/ymd65536/items/ed62043a6671b7529390)

——————————–
# 8月 3週目

2020/08/17 [【勉強】エンジニアの学び方を考える](https://qiita.com/ymd65536/items/e1da6e947209a571523a)

——————————–
# 8月 4週目

2020/08/23 [FEのノート](https:

元記事を表示

Protocolでパラメータの型をしばる

#Protocolとダックタイピング
動的型付け言語のいいところはダックタイピングが気軽にできること。

##3.7以前
“`py
def greet(o):
print(f’Hi {o.name}!’)
“`
3.7以前は引数oにnameがあることを保証するにはnameを持つ方Personを定義して、タイプヒント用いてしばる必要があった。

“`py
def greet(o: Person):
print(f’Hi {o.name}!’)
“`
ただ、この関数を安全に使おうと思うとPersonを継承しなければならず、Dog型のオブジェクトをパラメータとして渡そうと思うとPersonを継承しなければならず、おかしな継承を強いられる。

##3.8以降
Python3.8からProtocolが追加された。
[PEP544](https://www.python.org/dev/peps/pep-0544/)にあるように、ダックタイピングを安全に行うために便利。

“`py
from typing import Protocol

class HaveName(Prot

元記事を表示

Python3のリスト・辞書型の書き方

型について

“`
# List型
sampleA = [[name,”Sato”],[age,1]], [[name,”Mori”],[age,20]]

# Dictionary型
sampleB = {“apple”:1, “orange”:2}

# 型を調べる
type(sampleA)
type(sampleB)

#List型からKey/Valueを取り出す
for index, value in enumerate(sampleA)

#辞書型からKey/Valueを取り出す
for index, value in items(sampleA)
“`

元記事を表示

Pytorchで新しくRNNを作るには?

研究でRNNを使う時に,デフォルトのtorch.nn.RNN()等を使うのではなくて,
自作したRNNを使用したいと思っていたのですが,やり方に結構悩んだので,備忘録的にまとめておきます.

今回扱うのはデフォルトのRNNCellやLSTM,GRUなどを使ってモデルを組む段階の話ではなく,
RNNCellそのものを自作したり,内部のリンクを変更したいと思った時にどうすればいいかというお話です.

結論から言ってしまえば,nn.Moduleを継承してRNNのクラスを作るだけでした.
※ゼロから作るDeep Learning 3 のp.475~477がとても参考になりました.
部分的なコードは以下のような感じです.

“`python
import torch
import torch.nn as nn

class RNNCell(nn.Module):
def __init__(self,n_in,n_hid):
super(RNNCell,self).__init__()
self.i2h=nn.Linear(n_in,n_hid)
self.h2h=n

元記事を表示

【Python】いろんな型について調べてみた!(typing)

# はじめに
python3.5 より python にも型ヒントという概念が組み込まれました。
使用するには、 組み込み型を使用するか `import typing` を使用し、型のチェックには `mypy` を使用します。

# mypy について
## インストール
まず、 `mypy` を使用するためにパッケージをインストールします。

“`bash
$ pip install mypy
“`

## 設定ファイル
`mypy.ini` を以下のように作成し、そこに設定情報を記入します。

“`:mypy.ini
[mypy]
python_version = 3.8
disallow_untyped_calls = True
disallow_untyped_defs = True
disallow_untyped_decorators = True
disallow_incomplete_defs = True
check_untyped_defs = True
pretty = True

[mypy-django.*]
ignore_missing_imports

元記事を表示

OTHERカテゴリの最新記事