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

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

メディアンフィルタを使って,空画像から星を抽出した

## はじめに
メディアンフィルタをかければごま塩ノイズが軽減されることを利用して,
空の画像から星を抽出してみました.

[こちら](https://github.com/be-m1ya/star_detection)に全コードがのっています.

左:元画像 , 右:星抽出画像
![E58741_right.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/eb9cb621-6903-e7d5-57d3-b1b033697c95.jpeg)

## どうやって?

星はごま塩ノイズにそっくり.フィルタをかけたら消えてくれそう
→フィルタをかけた(星の消えた)画像と元画像の差として星が抽出できるはず…

## 結果
上:元画像
中:フィルタをかけた画像と元画像の差分
下:差分画像を2値化したもの
![E00012_right.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/abfad136-c

元記事を表示

ServerlessFrameworkでスクレイピング用Lambda-Layerを作る

# 前書き
最近AWSの勉強をしていてLambda Layerの存在を知りました。
スクレイピングもLambdaで楽にできるのでは?と思いチュートリアル的な記事を色々やってみましたがハマったので備忘録を残します。

チュートリアル?は[こちら](https://hacknote.jp/archives/49974/)を参考にしました。
最終的にIaCにしたかったのでServerlessFrameworkも使ってみました。
作成したコードは→[touka9029/selenium-lambda-layer](https://github.com/touka9029/selenium-lambda-layer)

DockerやAWS Cloud9、AWS CloudFormationなど周辺機能については解説しません。

# 環境やライブラリバージョン
– AWS Cloud9, AMI: ami-081330c4becd75920
– [adieuadieu/serverless-chrome](https://github.com/adieuadieu/serverless-chro

元記事を表示

無限小数を乗算して丸め誤差が起きた計算事例

# 概要

以下のような問題を解いていた。

“`
1000m先に信号機がある。この信号は、15秒ごとに赤になり、また15秒後に緑に戻ることを繰り返す。
ある自動車がこのエリアにs km/hで突入し定速で走り続けたが、この信号を緑で通過したい。
0<= s <= 200とするとき、これを実現できる最大の速度を求めよ。ただし、sは整数とする。 尚、信号はこの地点に到達した瞬間に緑であれば通過できるし、赤であれば通過できないとする。 この信号はエリアに入った瞬間に緑になったものとする。 ``` # 考え方 まず、ある信号機のある地点についた時間tが$ 0 \leqq t \lt 15$や$ 30 \leqq t \lt 45$, $ 60 \leqq t \lt 75$であれば通過でき、$ 15 \leqq t \lt 40$や$ 45 \leqq t \lt 60$であれば通過できない。つまり、tを15で除算した結果を切り下げたとき、偶数であればOK(通過), 奇数であればNG(通れない)となる。 次に、スピードは時速(km/h)であり、信号機の地点は(m)であるので単位を合わせ

元記事を表示

[Python3 入門 13日目]7章 文字列(7.1〜7.1.1.1)

#7.1 文字列
##7.1.1 Unicode

– コンピュータの記憶の基本単位は**バイト**で、8個のビットを使って256種類の一意な値を表現できる。
– ビット:2進数(0と1、バイナリ)で表した数字の桁数。4ビットは4桁、8ビットは8桁の2進数であり、それぞれ2の4乗(16)、2の8乗(256)通りの数字を表せる。
– バイト:8ビットで1バイト。1バイトを表すのに16進数を使うと分かりやすい。

– Unicodeは世界の言語の全ての文学と数学、そのほかの分野の記号を定義しようという発展途上の国際標準。

###7.1.1.1 Python 3のUnicode文字列

– Python3の文字列はUnicode文字列であり、バイト列ではない。
– 文字のUnicode IDまたは名前を知っている場合、Python文字列でそれを使うことができる。
– Pythonのunicodedataモジュールには双方向ほ変換関数が含まれている。
– lookup():名前(大文字と小文字を区別しない)を与えると、Unicode文字が返される。
– na

元記事を表示

テンプレートマッチングを用いた画像レジストレーションをした

##テンプレートマッチングを用いて画像レジストレーション

特徴点によるレジストレーションでは難しかった以下のような空と雲の画像(可視画像と赤外画像)に対してレジストレーションの方法を考えてみました.
[github](https://github.com/be-m1ya/image_registration)に全コードをのせています.

![空と雲](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/01c975b4-6eb5-8ad8-2152-ccae7e71d23d.png)

ちなみに特徴点を用いたレジストレーションをした結果はこんな感じです.
![特徴点によるレジストレーション](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437676/43d0f59f-8780-b214-617d-0c953d566590.jpeg)

変換後(!?)
![aligned.jpg](https://qiita-image-s

元記事を表示

S3を使わずにEC2のストレージを利用して、ファイルを保存する

某expertスクールを卒業後、同じようなやり方で簡易的にpythonでapiをアップロードしようとしたら、権限周りで失敗したので備忘録として

# EC2の種類
簡易的にpythonのapiを作成するため、S3を使わずストレージ中にapiで出てきたファイルを保存します。

– tタイプ
– ubuntu 18.04

# EC2ログイン後
スクールのカリキュラムでは、/var/www/を作成して、その中にアプリを入れていましたが、それでは権限周りでエラーが出てしまうので、ログイン後のhome/ubuntu/直下にgit cloneしましょう。

“`terminal
$ ssh -i /path/my-key-pair.pem ubuntu@x.xxx.xxx.xxx(IPv4アドレス)
# ユーザー名部分はubuntuなので注意(ec2-userではない)

(ログイン後)
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.b

元記事を表示

【機械学習】Word2Vecで単語間の類似度を測定する

##1.はじめに
この記事では、自然言語処理の最も基本的?なことである単語間の類似度を測定するということを行います。
というのも、私が次に作ろうと思っているwebアプリケーションで自然言語処理の要素を少し入れようと思っているからです。
そのため、学んだことをまとめる、他の人に自然言語処理について分かりやすく伝えるために、この記事を書きます。

##2.Word2Vecとは
Word2Vecとは自然言語処理でよく用いられる、単語の意味をベクトル化するツールのことを言います。
単語の意味をベクトル化するとは、どういうことでしょうか?
例えば、「小学校」、「中学校」、「コンビニエンスストア」という3つの単語があったとします。
これら3つの単語を3次元のベクトルとして、次のように表されるとします。
「小学校」 = [0.9, 0.8, 0.2]
「中学校」 = [0.9, 0.7, 0.3]
「コンビニエンスストア」 = [0.1, 0.3, 0.8]
ベクトルの要素はそれぞれ、「教育」、「大きさ」、「利便性」を表しているとします。(意味も数字も適当です)
このとき、「小学校」と「中学校」の

元記事を表示

独自例外の作成

“`py:
class UppercaseError(Exception):
pass

def check():
words = [‘APPLE’, ‘orange’, ‘banana’]
for word in words:
if word.isupper():
raise UppercaseError

try:
check()
except UppercaseError as e:
print(‘独自に作成したエラーです。’)
“`

“`:実行結果
独自に作成したエラーです。
“`

Exceptionをスーパークラスとして継承した
サブクラスUppercaseErrorを作成。

UppercaseErrorの中身はpass即ち、
Exceptionと同じ。

check関数を作成。
check関数の中身はwordsリストの中身を1つ1つ
大文字で記載したものがないかチェックし、
あった場合はraise UppercaseError
つまり、UppercaseErrorとする というもの

元記事を表示

[Python3 入門 12日目]6章 オブジェクトとクラス(6.3〜6.15)

#6.3 継承
– 使いたい既存のクラスを指定し、追加、変更したい一部だけを定義する新しいクラスを作る。(継承)
– 新クラスでは追加、変更したい部分だけを定義する。するとこの定義が実際に使われ、**上書き**された古いクラスの動作は使われない。これを**オーバーライド**という。
– 元のクラスを親、スーパークラス、基底クラス、新しいクラスは子、サブクラス、派生クラスと呼ばれる。
– 子クラスは親クラスを専門特化したものである。

“`py

>>> class car():
… pass

#親クラスの継承。()に親クラス名を入れる。
>>> class yugo(car):
… pass

>>> give_me_a_car=car()
>>> give_me_a_yugo=yugo()
>>> class car():
… def exclaim(self):
… print(“I am a car!”)

>>> class yugo(car):
… pass

>>> gi

元記事を表示

Python 3 エンジニア認定基礎試験を受験した感想

# はじめに
Python 3 エンジニア認定基礎試験を受験してきましたので、簡単に感想を記録しておきます。
個人的に受験前に知りたかった情報などが書ければと思います。

# Python 3 エンジニア認定基礎試験とは
|項目||
|—|—|
|制限時間|60分|
|問題数|40問|
|合格ライン|70%(700/1000点)|

# 筆者について
都内にある中規模の会社に入社して2年目のSEです。
今までにシェルスクリプト、C、C#の開発を経験しました。
Pythonについては半年前までは一度も触ったことがありませんでしたが、流行の言語である(?)との情報を聞き受験に至りました。
あと、弊社では、この類いの試験に合格するとなんと会社からお小遣いがもらえます(あるあるだと思いますが)。

業務では、社内で使用するツールをPythonで1ヶ月弱かけて作成したほどの経験しかありません。

# 学習方法
* 「Progate」で2ヶ月課金して学習。
https://prog-8.com/languages/python
* 「DIVE INTO EXAM」の模擬試験を3週間ほど

元記事を表示

PythonでABC152のA~C問題を解く

### はじめに
[前回](https://qiita.com/taxfree_python/items/80246826ff9d93c23520)からレートが少しあがって、今は104です。
今回は、A~C解くことができました。

###A問題
[問題](https://atcoder.jp/contests/abc152/tasks/abc152_a)

**考えたこと**
n == mの時だけACなので簡単なif文を書けばよい。

“`python
n, m = map(int,input().split())

if n == m:
print(‘Yes’)
else:
print(‘No’)
“`
‘Yes”No’の大文字に注意!

###B問題
[問題](https://atcoder.jp/contests/abc152/tasks/abc152_b)

**考えたこと**
aとbの各桁の大小の比較の実装に苦労した。最終的に、intをlistに変換してindexを引き出して比較した。
for文でindexを指定して、それで大小を比較した。

“`py

元記事を表示

AtCoder Beginner Contest 152 参戦記

# AtCoder Beginner Contest 152 参戦記

## ABC152A – AC or WA

1分半で突破. 書くだけ.

“`python
N, M = map(int, input().split())

if N == M:
print(‘Yes’)
else:
print(‘No’)
“`

## ABC152B – Comparing Strings

2分で突破. 書くだけ.

“`python
a, b = map(int, input().split())

if a < b: print(str(a) * b) else: print(str(b) * a) ``` ## ABC152C - Low Elements 5分で突破. 流石に二重ループは TLE なので、現時点の最小値を持ち回す必要あり. 題意を理解するのに少し時間を使った. ```python N = int(input()) P = list(map(int, input().split())) result = 0 m = P[0

元記事を表示

PDFから文字情報を抽出するには、PDFMiner一択

# PDFから文字情報を抽出するために

### 環境構築

“`Dockerfile:Dockerfile
FROM python:3.6
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
RUN apt-get -y update && \
apt-get install -y –fix-missing \
build-essential \
software-properties-common \
poppler-utils && \
apt-get clean && \
rm -rf /tmp/* /var/tmp/* && \
mkdir /api
WORKDIR /api
COPY requirements.txt /api/requirements.txt
RUN pip3 install –upgrade pip && \
pip3 install –upgrade -r requirements.txt
EXPOSE 8888
ENTRYPOINT jupyter not

元記事を表示

例外の復習

“`py:1
l = [1, 2, 3]
i = 5

print(‘start’)
try:
l[0]
except IndexError as ex:
print(‘そのインデックスはありません。{}’.format(ex))
except NameError as ex:
print(‘定義されていません。{}’.format(ex))
except Exception as ex:
print(‘other: {}’.format(ex))
else:
print(“正常に処理されました。”)
finally:
print(“end”)
“`

“`:1の実行結果
start
正常に処理されました。
end
“`
どのエラーも発生しないので、
elseブロックとfinallyブロックが実行された。

“`py:2
l = [1, 2, 3]
i = 5

print(‘start’)
try:
l[i]
except IndexError as ex:
print(‘そのインデックスはありません。{}’.

元記事を表示

グローバル変数とローカル変数2

“`py:1
player = ‘太郎’

def f():
player = ‘次郎’
print(‘local:’, locals())

f()
print(player)
“`

“`:1の実行結果
local: {‘player’: ‘次郎’}
太郎
“`

ローカル変数を宣言しないで、
locals()を実行すると、

“`py:2
player = ‘太郎’

def f():
print(‘local:’, locals())

f()
print(player)
“`

“`:2の実行結果
local: {}
太郎
“`
空の辞書がかえってくる。

globals()も実行してみると、

“`py:3
player = ‘太郎’

def f():
print(‘local:’, locals())

f()
print(‘global:’, globals())
“`

“`:3の実行結果
local: {}
global: {‘__name__’: ‘__main__’, ‘__doc__’: None, ‘

元記事を表示

Python学習メモ

# はじめに
pythonの勉強の為、学習内容をメモしたものです。
誤記などあればご指摘ください。

# 組み込み関数
“`python:

# 型変換
# intに変換
int(“100”) # 10進数
int(“100”, 2) # 2進数
int(“100”, 16) # 16進数
# float値に変換
float()
# 文字列に変換
str()
# 文字の出力
print(“文字列”)
print(“文字列”+”文字列2”) # 文字列を連結する
print(“文字列”+ str(100)) # 数値を文字に変えて連結
print(“文字列”,100) # 文字と数字連結(間にスペースが入る)
# 文字の入力
test = input()

# 合計
list = [1,2,3]
sum(list) # 結果 : 6

# 最大値
max(list) # 結果 : 3

# 最小値
min(list) # 結果 : 1

# 長さ
len(list) # 結果 : 3
“`

# for文

“`python:
loop = [0,1,2

元記事を表示

グローバル変数とローカル変数1

“`py:1
player = ‘太郎’

def f():
print(player)

f()
“`

“`:1の実行結果
太郎
“`

“`py:2
player = ‘太郎’

def f():
print(player)
player = ‘次郎’
f()
“`

“`:2の実行結果
Traceback (most recent call last):
File “Main.py”, line 7, in
f()
File “Main.py”, line 4, in f
print(player)
UnboundLocalError: local variable ‘player’ referenced before assignment
“`
グローバル変数playerには太郎が入っている。
ローカル変数playerには次郎を入れた。
しかし、ローカル変数playerを宣言する前に、
print(player)を実行しようとしている為にエラーとなる。

それを改善する為に、
print(pla

元記事を表示

【ハーレム】多すぎて選べない!Pythonで円周率πを計算する13の方法

 宇宙の深淵からこんにちは!

“`math
\displaystyle\int {\rm d}\boldsymbol{r}\hat{\psi}^{\dagger}(\boldsymbol{r})ぽっぴんフレンズ\hat{\psi}(\boldsymbol{r})
“`
です!今回は、**Pythonで円周率 $\pi$ を計算する方法**を**13通り**紹介したいと思います!

 以前、[「もう円周率で悩まない!πの求め方10選」](https://www.procrasist.com/entry/pi_1)という(円周率界隈では有名?な)記事を拝読し、「π求めてぇ」という欲望が増幅したので、今回の記事を執筆するに至りました。そして今回、**記事にある $\pi$ を求める方法のほとんど全てをPythonで実装**してみました!

 いざやってみると、**Pythonの基礎知識**(関数、Numpy、for文、while文、if文、クラスなど)が**ふんだんに盛り込まれていた**ので、(筆者のような)プログラミング初心者が Python の練習としてやってみるのはすごくオススメ

元記事を表示

【Python】初級者がDjangoのWebアプリケーションを勉強中にトラブルシューティングしたこと

#1.この記事について
##概要

DjangoのWebアプリケーション開発を勉強しているときに引っ掛かった部分を忘備録的にメモしました。

##内容
こちらのチュートリアルに従って勉強しました。
[https://eiry.bitbucket.io/](https://eiry.bitbucket.io/)

##※※
内容が「初級者が~」ということのなので、ある程度Djangoやその他Webアプリになれた方にとっては響かない記事かもしれません。

#2.使用したツール・環境
環境
・Windows10
・Python3.8.0
・Webフレームワーク:django2.2.5
・DB:sqlite3.30.1

ツール
・Pycharm


#3.トラブルシューティング
##(A)__HTMLのinputタグとtextareaタグ内の文字色が白色になってしまう
###(1)現象
####設定内容
forms.pyに次のようにフォームを指定

“`py:forms.py
from django import forms

from .models import Pos

元記事を表示

DjangoでWebサイトを立ち上げてみる。Part3〜Templateの作成〜

#この投稿について
学習しながらの作業を進めておりますので、作業進捗の備忘録、学習効果の向上を目的として記録していきます。

#開発環境
* macOS High Sierra 10.13.6
* Anaconda 3
* Python 3
* Visual Studio Code
* Django 2.2.5

#テンプレートの作成
テンプレートはDjangoがどのように動き、ウェブサイトとどのように関わっているかを理解するのに重要な部分です。
テンプレートとモデルがどのようにつながっているかを学習します。

#templatesフォルダの作成
プロジェクトフォルダの直下にtemplatesフォルダを作成します。

#settings.pyの編集
templatesフォルダの存在をsettings.pyに記述します。

“`py:first_project/settings.py
import os

# Build paths inside the project like this: os.path.join(BASE_DIR, …)
BASE_DIR = os.path.

元記事を表示

OTHERカテゴリの最新記事