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

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

1/22 今日の目標と反省

はじめまして。pinaと申します。
元エンジニアで、AIエンジニアやデータサイエンティストの分野を目指して学習しています。

依然学習していたものの生活リズムの乱れとともに学習意欲が落ちてしまい続きませんでした。
今回は目標を立てて言語化することで、可視化するとともに表にアウトプットし、より意識できるようにしていきたいと思います。

今週の目標:
・環境に慣れる
ツールの使い方に慣れるまでは大変だが、焦らず一つ一つこなしていく

・プログラムを書く
トレースしながら改変し、自分で手を動かして楽しくものを作っていく

・言語化する
どう楽しかったか、どう難しかったかをこのqiitaに投稿して振り返る

今日の目標:
Tkinterを使ってGUIアプリを作る
ボタンをクリックすると関数を実行して画面に文字列を表示

元記事を表示

Pytestのjunitxmlオプションを付けると警告がでた

# 現象
pytestの勉強中に、テスト結果をJUnit形式で出力してJenkinsに食わせようと思い、–jnuixmlオプションを付けたら下記の警告メッセージが表示された

“`
============================================================== warnings summary ==============================================================
/usr/local/lib/python3.7/site-packages/_pytest/junitxml.py:436
/usr/local/lib/python3.7/site-packages/_pytest/junitxml.py:436: PytestDeprecationWarning: The ‘junit_family’ default value will change to ‘xunit2’ in pytest 6.0.
Add ‘junit_family=xunit1’ to your p

元記事を表示

PYTHON環境構築するなら絶対に理解しておかないといけない注意点

#インストール形式は3種類ある

普段みなさんがpythonの開発環境を構築するためには下記の公式ページからインストーラーをダウンロードすることでしょう。
***Python Releases for Windows***
https://www.python.org/downloads/windows/

例えば2020年1月21日付ではpython3.8.1が下記の形式で配布されている
※webの内容をコピペ

– Download Windows help file
– Download Windows x86-64 embeddable zip file
– Download Windows x86-64 executable installer
– Download Windows x86-64 web-based installer
– Download Windows x86 embeddable zip file
– Download Windows x86 executable installer
– Download Windows x86 web-based in

元記事を表示

AtCoder用にPythonの環境構築

# はじめに
最近、[AtCoder](https://atcoder.jp/)を始めました。
AtCoderは競技プログラミングサイトで、毎週リアルタイムのコンテストが開催されていて、AtCoderで評価されたレーティングを利用して、転職活動ができる[AtCoderJobs](https://jobs.atcoder.jp/)というサービスが話題になっているそうです。
最初、シェルがfishでHomebrewなどが入っている状態で色々試していましたが、うまくいかなかったので、Mac環境をきれいにして環境構築をしました。

# 環境
`macOS Catalina 10.15.2`
`Homebrew 2.1.15`
`bash 3.2.57`

# シェルをbashに戻す
ターミナルで以下コマンドを叩いて、ターミナルの再起動をするとシェルがbashに戻ります。

“`
$ chsh -s /bin/bash
“`

# Homebrewをアンインストールする
以下コマンドを叩いてパスワードを入力すると、Homebrewをアンインストールできます。

“`
$ ruby -e “

元記事を表示

pythonの二次元辞書を宣言・初期化する

## 動作環境
Windows10
PyCharm
python3.7

# やりたいこと
pythonの辞書型を二次元で初期化したい。

## コード
“`python
def main():
dic = {“a”: 0, “b”: 0, “c”: 0}
char_dic = {“a”: 0, “b”: 0, “c”: 0}
char_dic[“a”] = dict(dic)
char_dic[“b”] = dict(dic)
char_dic[“c”] = dict(dic)

# 任意の文字の次の文字の数を数える処理(二次元辞書が必要)
string = “aacbbb”
for i, n in enumerate(string):
if i + 1 == len(string):
break
char_dic[string[i]][string[i + 1]] += 1

for key, value in char_dic.items():

元記事を表示

[Python]メモ帳Twitterを作る(タイムライン表示編)

[[Python]メモ帳Twitterを作る(ツイート編) – Qiita](https://qiita.com/higuratu/items/1cf5d54a8925f0860262)の続編です。

上記の記事を投稿して1年以上経ってしまいました。
前回はツイートするところまで出来たので、今回はタイムラインを表示してみたよという備忘録。

PythonでTkinterというGUI作れるライブラリ使ってメモ帳twitter作るよ!

#前回のを少し修正
前回はツイート時に認証を通していたが、何度も認証通すのが面倒くさいので起動時に認証通すようにしてしまいました。
あとは可変があるキーはあとから修正しやすいように別ファイルに隔離しました。

“`python:config.py
#twitterの認証に必要なキー一覧
CONSUMER_KEY = “XXXXXXXXXXXXXXX”
CONSUMER_SECRET = “XXXXXXXXXXXXXXX”
ACCESS_TOKEN = “XXXXXXXXXXXXXXX”
ACCESS_TOKEN_SECRET = “XXXXXXXXXXX

元記事を表示

Macでptyhon3

#Macでptyhon3
備忘録として残しておく
##環境
MacOSのバージョン10.14.6
Pythonのバージョン2.7.10

##3系の導入 
公式pkgをDL
https://www.python.org/ftp/python/3.8.1/python-3.8.1-macosx10.9.pkg
指示通りにインストール

##デフォルトをpython3にする
“`
$ echo ‘alias python=python3’ >> ~/.bash_profile
$ source ~/.bash_profile
“`
##2.7.10はpython2として起動できるようにシンボリックリンクを貼っておく
“`
$ cd /usr/local/bin
$ sudo ln -s /usr/bin/python2.7 python2
“`

##動作確認
“`
$ python -V
Python 3.8.1

$ python2 -V
Python 2.7.10
“`

元記事を表示

Python命名規則(PEP8より)

Pythonには 「[PEP8: Pythonコードのスタイルガイド](https://pep8-ja.readthedocs.io/ja/latest/)」があって、変数名や関数名などの命名規則も書いてあります。
命名規則やコーディングスタイルを合わせることで、ソースコードを書くと、読んでくれる人たち、レビューしてくれる人たちの負担を下げることができます。
命名規則だけでなく「[リーダブルコード](https://qiita.com/search?q=tag%3Aリーダブルコード)」に書かれている命名方法も参考にしましょう。

### PEP8

| 用途 | 命名規則 |
|:—————–|:——————|
| 非公開、プライベート | 先頭にアンダースコアを1個つける |
| サブクラスで名前衝突回避 | 先頭にアンダースコアを2個つける |
| 予約語や組込み関数名と衝突回避 | 最後にアンダースコアを1個つける |

| 用途 | 命名規則 |
|:—————–|:——————|
|

元記事を表示

Pythonの正規表現が覚えられない

使い方のかんたんなメモ

“`py
import re
ptn = re.compile(r”hoge+”) # 使い回すならcompileしたほうが速い
ptn_with_capture = re.compile(r”(hoge)e*”) # キャプチャはカッコを使う
string = r”hogee_qwerty_hogeeeeee”

# マッチする最初の部分を取得
first_matched_string = re.search(ptn, string).group()
print(first_matched_string)
# => hogee
# キャプチャをつけるとgroup(番号)でその部分だけ取得
first_matched_string = re.search(ptn_with_capture, string).group(1)
print(first_matched_string)
# => hoge

# マッチするすべての部分をリストで取得
matched_string_list = re.findall(ptn, string)
print(match

元記事を表示

teratailのダウンローダーを作った

#はじめに
スクレイピングの練習に何か作ろうということで、teratailの記事の中にあるコードをダウンロードする「teratailer」というソフトを作りました。teratailerは[howdoi](https://github.com/gleitz/howdoi)というソフトを参考にしました。

#teratailerの説明
指定したURLのページからコードの部分を取得し、teratail1.txt(?には数字が入る)というファイル名で保存します。コードの箇所が複数ある場合は teratail1.txt teratail2.txt teratail3.txt … という感じで複数のファイルに保存します。URLは複数指定できます。
また、-nで指定したURLに含まれるコードの数を表示、-tでファイルに保存せずターミナルに直接表示します。

#環境
Ubuntu 18.04 LTS
Python 3.6.9
Requests 2.22.0
lxml 4.4.2
cssselect 1.1.0

#ファイル構成

“`
teratailer
├── README.md
├── s

元記事を表示

Ubuntu18.04にPython3とOpenCV環境を構築する

# モチベーション
ラズパイとカメラでPythonを使って顔認識による顧客分析をやってみようと思い、VMでテスト環境を構築する。今回のゴールは、MacにUbuntuの仮想環境を作り、Ubuntu上でPython3とOpenCVを動作させるまでとする。

# 環境
– Ubuntu16.04が動作することが前提
– Python 3.6.9を導入
– OpenCV 4.2.0を導入

# OpenCVと依存するライブラリのインストール
gitコマンドを使って、ソースコードを取得しています。

“`
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
“`

#ソースコードの入手
gitコマンドを使っ

元記事を表示

【その設定値をゼロにするなんてとんでもない!】SQSで同じメッセージを複数件受信してしまう

SQSをポーリングする処理を実装していたところ、**同一メッセージを同時に**受信してしまう事象に遭遇した。

解説コードはPythonだが、事象は他の言語/SDKでも発生するものと考えられる。

# 何が起きたか

以下は、SQSキューからメッセージを最大10件取得するPythonコード。

なお、対象のキューにはメッセージが1つしか格納されていない状態とする。

“`python

import boto3

# SQSにリクエスト送信
client = boto3.client(‘sqs’)
messages = client.receive_messages(QueueUrl=my-url, MaxNumberOfMessages=10).get(‘Messages’)
“`

受信したメッセージを表示する。

“`python
for i, message in enumerate(messages):
print(i)
print(‘MessageId: ‘ + message[‘MessageId’])
print(‘MD5: ‘ + mes

元記事を表示

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

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

[こちら](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とする というもの

元記事を表示

OTHERカテゴリの最新記事