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

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

CNNを用いた奇数/偶数の分類

##目的

人が数字の画像から奇数か偶数か把握するとき,何の数字が描かれているのかを頭で数字に変換してから,その数字が奇数か偶数か,2段階の処理をします(多分).そこで,人間でいう奇数か偶数か考える過程をすっ飛ばして,画像を認識するだけのConvolution Neural Network(以下CNN) を用いて,数字の奇数・偶数は分類出来るのか検証してみた(出来るだろ, という意見はおいておいて…)

本記事のコードは以下においています.
[githubリンク](https://github.com/be-m1ya/mnist_classification)

##使用データ
手書き数字画像と数字のラベルのセット
The Mnist database【http://yann.lecun.com/exdb/mnist/】
トレーニングデータ数 : 60,000 samples, テスト用データ数 : 10,000 samples

##実験
Convolution Neural Networkを用いて,奇数/偶数の分類を試みました.
また,おまけで5以上/5以下の分類もやってみ

元記事を表示

Python+Cursesで、MineSweeperを試作

Python+Cursesで、minesweeperを書いてみました。
Ubuntuのターミナルで動きます。
ファイルに、`chmod +x minesweeper.py`として、実行権を付けて動かして下さい。

`$./minesweeper.py [number of mines]`として、動かします。
[number of mines]は、省略できます。省略すると、機雷の数は60個となります。

スペースキーで、開き、’z’キーで、マークを付けます。カーソルは矢印キーで動かします。
’q’キーで抜け出せられます。

“`minesweeper.py
#!/usr/bin/python3

import curses
import random
import locale
import select
import sys

argvs=sys.argv
argc=len(argvs)

if argc==2:
mines=int(argvs[1])
if mines>300:
print(“too many mines”)
exit(1)
else:

元記事を表示

【認証】Vue+Python(Flask)でCORSで詰まった話

# はじめに

Vue(127.0.0.1:8080)+Flask(127.0.0.1:5000)で認証機能の実装をしているときにCORSで詰まったときの話。

# 何をしようとした

VueからAPIをたたき(login api的な)、Flask側で認証を行います。認証が成功したら、CookieにJWT形式のトークンをセットしレスポンスを返すという実装を行う際、セットしたCookieがブラウザ側でセットされず、次のAPIリクエスト時に正しく認可が行えない問題が発生しました。

JWTの生成にはflask_jwt_extendedを使っています。

# 結論

flaskのモジュール**「Flask-CORS」**を使います。

[Flask-CORS](https://flask-cors.readthedocs.io/en/latest/)

“`
pip install -U flask-cors
“`

“`python

app = Flask(__name__)
cors = CORS(app)
“`

ただ、Cookieを扱う際は上記だけではだめで、以下の「

元記事を表示

複数のCSVを各エクセルシートに変換

#概要
膨大な量のCSVファイルを閲覧するのには難があります。
Pythonで一つのエクセルファイルにまとめました。
CSVを同じシートに結合はよくみかけますが、1csv=1シートの変換は例が見つからず、
備忘録をかねて記事にしました。

#環境
ubuntu(wsl)
python3.6.8

#コード

“`python:csvtxlsx.py
import os
import glob
from pathlib import Path

import openpyxl
import csv

csvfiles = glob.glob(“(読み込み元ファイルパス)/*.csv”, recursive=False)
wb = openpyxl.Workbook()
for file in csvfiles:
wb.create_sheet(os.path.splitext(os.path.basename(file))[0])
wb.active = wb.sheetnames.index(os.path.splitext(os.path.basename(fil

元記事を表示

海賊版漫画サイトの広告をスクレイピングで消してみた

## 経緯
manga1001.comという海賊版漫画サイトで漫画を読んでいる友人が
「過激な広告が多くて外で見えないし、Adblock使うと警告出るんだよね」
と言ってたので、じゃあ消してみよう!と思った。

## 注意
* 海賊版漫画サイトの使用を助長する目的の記事ではありません。
* Qiitaを利用するようなインターネットリテラシーの高い人たちは海賊版漫画サイトを利用しないと信じてます。
* 僕自身、技術的な興味で行ったもので、今後海賊版漫画サイトを使用するつもりはありません。
* 記事執筆時(2020/01)の現行法では、海賊版漫画サイトを閲覧すること自体に違法性はないです。

また、当記事と同じようなことをする場合、

* 複数ページへのスクレイピングでサーバへの負荷をかけないこと
* 画像をダウンロードして保存した場合、第三者に渡さないこと(当記事のスクレイピングでは画像のダウンロードは行っていません)

にお気をつけください。罪に問われる可能性があります。

## 方法
1. manga1001.com内の任意のURLを入力
1. Chromeを開く
2. `img`の

元記事を表示

Python初心者が初めてのWebスクレイピングで詰まったこと

# はじめに
Pythonの文法すら知らない状態でWebスクレイピングに挑戦したら色々と詰まったので、備忘録がてらまとめる。
実装したものは、とあるWebサイトからドリンクデータを取得して、CSVファイルに出力するプログラム。

## 環境
* windows 10
* Anaconda 3
* python 3.7.3
* BeautifulSoup 4.8.2

## 複数ページからデータを取ってくる
1つのページからデータを取る方法はすぐに見つかったが、どうやって複数ページから取得すれば良いのか?

“`py
import requests
from bs4 import BeautifulSoup

import re

# 複数ページのURLを入れる配列
urls_ary = []

# トップページから、全てのaタグを検索して、そのhref属性を取得、配列に追加
url = ‘http://hoge/top’
r = requests.get(url)
soup = BeautifulSoup(r.text, ‘lxml’)
for a in soup.find_all(

元記事を表示

呼び出し元関数名取得方法

以下はどちらもbと出力される。
inspectがいかなるものかよく調べていないが、
とりあえず動いたことだけは確認できたのでメモを残しておく。

“`python
import inspect

def a():
print(inspect.getouterframes(inspect.currentframe(), 2)[1][3])

def b():
a()

b()
“`

“`python
import inspect

class c(object):
def a(self):
print(inspect.getouterframes(inspect.currentframe(), 2)[1][3])

def b(self):
self.a()

d = c()
d.b()
“`

元記事を表示

Tello Eduを用いたPythonプログラミング教育支援環境(SDK2対応,改訂版)

# Tello EduのSDK2を使ったプログラミング教育を行うための支援環境開発を行いました(ベータ版)

### 概要
ミニ(ホビー)ドローンを使って小学生高学年から高等学校の児童生徒がプログラミングを学べる教材を開発しています。巻末の参考資料を参考に作成しています。ありがとうございます。

[Tello Eduをpythonで動かそう!(SDK2対応)](https://qiita.com/yoomori/items/e847166433d44ab53c29)の改良版です。コマンドやインタフェースを変えています.

前バージョンからの主な変更点は以下の通りです.
#### Tell Eduとの間のコマンド通信ログ等 Tello Eduの状態がわかるインタフェースを作成
以下の画面に状態が表示されます.またここからドローンを実行できるようにしました.
image2.png[Docker入門]勉強して得られたDockerの知見を色々まとめてみた(Windows・Python)

社内で専門のインフラ関係の担当の方がいらっしゃって、環境などはよしなにしてくださっていたのですが、流石にそろそろDocker周りを自分でも勉強しておかないとまずいだろう・・ということで、最近Dockerにやっと入門したので、色々と学んだことを備忘録も兼ねてまとめたり試したりしていこうと思います。

経歴的にインフラ周りなど馴染みの薄いお仕事を長くしてきていたので、知識的に荒い(浅い)ところなどは色々ご容赦ください。
私も初心者ですし、あまりインフラとかに馴染みのない方向けの記事となります。

Windows環境(Docker for Windows)でLinuxやPython関係を動かしたりを中心に進めていきます。

# この記事で触れること

– コンテナなどの概要やメリット
– Docker for Windowsのインストール・設定
– コンテナとイメージ関係の基礎
– Docker Hubやタグについて
– Dockerfileの基礎
– 実際にUbuntuにPythonなどを絡めたイメージのビルド

# この記事で触れないこと

記事が長くなりすぎるので主に以下は触れません。

元記事を表示

人工衛星(Sentinel-2)の観測画像をAPIを使って自動取得してみた.

## 概要
これまで,欧州の地球観測の人工衛星(Sentinelシリーズ)の画像の取得方法について紹介しました.
[無料で最新の衛星画像を入手する方法.](https://qiita.com/nigo1973/items/9bb6a11caac8e3e1e850)

今回は,Sentinelが提供するAPIを用いて,jupyter lab などのPuythonのプラットフォームにSentinelの観測データを管理するCopernicusのサーバからの直接取得する方法,および取得したデータの画像処理,関心域の画像抽出,最後に抽出した画像のjpeg処理について紹介します.自己流ですので,よりスマートな方法がありましたらぜひコメントにてお教えください.
なお,この記事で紹介するコードは以下の記事を参考にさせていただきました.ありがとうございます.

[Satellite Imagery Access and Analysis in python jupyter notebooks](https://towardsdatascience.com/satellite-imagery-a

元記事を表示

Ubuntu等Linux上でPython3/Tkinterのアプリケーション名表示についての問題

#環境
Ubuntu 19.10 64bit
Python 3.7.5
Tkinter 上記に付属のため省略
#Ubuntu上での挙動
“`python
#python2での実行時は、tkinterをTkinterに変更する。
import tkinter

root = tkinter.Tk()
root.title(“Hello World”)
label = tkinter.Label(root,text=”Helloworld”)
label.pack()
root.mainloop()
“`
これを実行すると、
![pic1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387968/b0cf4503-7d69-c5c6-41d7-e5a6643a4dc2.png)
![pic2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/387968/b6681484-666e-829d-7db5-9e14674b64

元記事を表示

Re:ゼロから始める競技プログラミング生活 第1章2『涙のPython』

#第2の敵
今回は前回より難しいB問題を解いていきます!!
では早速、問題どーん!!
ce1c5b58d8be6c42b4e39bd7d61f140b.png

…何じゃこれ
難易度一気に上げ過ぎではないでしょうかねぇ…
とりあえず図を描いて何を求めていけば良いのかを整理してみます。
![image0.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570839/55c0c0c9-3eac-dcd0-a23f-6f8b1381dc20.jpeg)

なるほど、この小学生でもまだマシなものを描きそうなこの図を見ると、Lの回数に最初の1回を加えたものがこの問題の解答になると言うことですね。意外と簡単だった!!
では早速、C++

元記事を表示

pythonでOSのコマンドを実行して標準出力、標準エラー出力、リターンコードを取得する

python3系で動作確認しました。

“`python
import subprocess

def exec_subprocess(cmd: str) -> (str, str, int):
“””
OSコマンドを実行し結果を返す
:param cmd: コマンド文字列
:return: 標準出力、標準エラー出力、リターンコードのタプル
“””
child = subprocess.Popen(cmd, shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = child.communicate()
rt = child.returncode
return stdout.decode(), stderr.decode(), rt

“`

実行例1

“`python
stdout, stderr, rt = exec_subprocess(“echo

元記事を表示

モンティ・ホール問題の数式に頼らない直感的な解説と、Pythonによるシミュレーション

モンティ・ホール問題は、確率のパラドックスとして有名な問題です。本記事では、私が考えて最も納得できた数式に頼らない直感的な説明をしてみます。

# モンティ・ホール問題
[Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%BB%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C)より引用
>プレーヤーの前に閉じた3つのドアがあって、1つのドアの後ろには景品の新車が、2つのドアの後ろには、はずれを意味するヤギがいる。プレーヤーは新車のドアを当てると新車がもらえる。プレーヤーが1つのドアを選択した後、司会のモンティが残りのドアのうちヤギがいるドアを開けてヤギを見せる。ここでプレーヤーは、最初に選んだドアを、残っている開けられていないドアに変更してもよいと言われる。
ここでプレーヤーはドアを変更すべきだろうか?

答「プレーヤーはドアを変更すべきである。なぜなら変更しなかった場合の当たる確率が$\frac{1}{3}$なのに対し、変更した

元記事を表示

AtCoder Beginner Contest 153 参戦記

# AtCoder Beginner Contest 153 参戦記

## ABC153A – Serval vs Monster

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

“`python
H, A = map(int, input().split())

print((H + (A – 1)) // A)
“`

## ABC153B – Common Raccoon vs Monster

2分半で突破. 書くだけ. 必殺技の合計ダメージがモンスターの体力を上回っているか、それだけ.

“`python
H, N = map(int, input().split())
A = list(map(int, input().split()))

if sum(A) >= H:
print(‘Yes’)
else:
print(‘No’)
“`

## ABC153C – Fennec vs Monster

2分半で突破. 書くだけ. できるだけ体力が多いやつを必殺技で倒したいので、ソートして先頭K匹以降を攻撃で倒すものとして集計すればいいだけ.

“`python

元記事を表示

ABC153のA~DをPython3で解く

### はじめに
こんばんは。tax_freeです。午前中は英検を受けて来て、午後はABCを解くという日でした。英検を受験したせいで、日曜日感がゼロで疲れがmax。[前回](https://qiita.com/taxfree_python/items/4c75ff6cf9edc679a020)からレートが17上がりました。
今回のABCは簡単だったのでは。でもできなかった。言い訳させてください。コンテスト中にお腹を壊してトイレに入ってました。みんなは、コンテスト前にヨーグルト食べたり、豚骨ラーメン食べたり、体冷したりしないように気を付けてください。

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

**考えたこと**
HをAで割っていって0より小さくすればいいので、Hが何回Aで割り切れるかを計算すればよい。割り切れない時の場合分けに注意。

“`python
h, a = map(int,input().split())
if h % a != 0:
print(int(h/a)+1)
else

元記事を表示

Qiitaってプログラマーのブログと聞いてアカウントを作成しました

#50の手習いでプログラミングを学びはじめる

Pythonをストアカの講座で学びました。その時に先生から(すごい若くてカッコいい)Qiitaはプログラマーのブログだと聞いてアカウントを開設してみました。

ついでにGitHubも開設、プログラム学習の備忘録にしようと思います。

#QiitaってMarkdown記法なの?
すこし慣れないと難しいかも。。。見出ししかわからないw

#ストアカでの備忘録
– Pythonのインストール
– Anacondaのインストール
– ターミナルを使った動作
– Webページの見出しのスクレイピング
– テーブルタグのスクレイピングソース
– brueを使ったSeleniummのインストール
– サイトのログインやページ操作
– ページの情報収集
– XPATHの使い方

備忘録といいつつ半分以上忘れている感じがあり
やばいです、、、ジュピター含めて明日から復習していきます。

元記事を表示

Pythonista3を使ってTwitterのTLをiphoneに音読してもらう

# 背景
仕事が終わってTwitterのTLを見ようかと思っても、他にやりたいことが多くてTwitterを見る時間がとれないので、iPhoneが話してくれるのを聞くだけで済むようにした。

# 環境
iPhone8 13.2.3
Pythonista3 3.2
Tweepy 3.5.0

#準備
・Pythonista3のインストール
・Twitter APIの登録申請
(参考:[PythonでTwitter API を利用していろいろ遊んでみる](https://qiita.com/bakira/items/00743d10ec42993f85eb))
・StaShのインストール
(参考:[Pythonista 3 にStaSh をインストールする。](https://qiita.com/maboy/items/cef5dee13d5b2e9ac843))
・Tweepyのインストール

#ファイル構成
今回私は以下のようなファイル構成にした。
├─twitterconfig.py #認証情報を管理
├─sp_timeline.py #実際に動かすコード

#コード
`

元記事を表示

CNNをベースとした音声区間分割 inaSpeechSegmenter を使ってみた

# はじめに
– 音声ファイルの分割をしたい(久しぶりに音声の話題なのは(ry
– Pydubでもできるけど,パラメータを考えるのが面倒くさい
– 今回紹介するものはシンプルな作りをしている
– 区間ごとにラベル付けをしたり,一応性別検出もしてくれる
– [Pythonの音声区間検出ライブラリ inaSpeechSegmenterを試してみた話](http://tam5917.hatenablog.com/entry/2020/01/25/132113)@先駆者様感謝

# 実行環境
今回試した環境は以下の通りです.
OS: Ubuntu 18.04 LTS
CPU: i3-4130 3.40GHz
メモリ: 16GB
GPU: GeForce GTX 1660 Ti (6GB)
Python : 3.6.9

# 1. inaSpeechSegmenterのインストール
本家通りに実行すれば,基本は問題ありません.
https://github.com/ina-foss/inaSpeechSegmenter

加えて必要となるものを以下にまとめて列挙します.
※仮想環境で作成する

元記事を表示

[Python3 入門 17日目]8章 データの行き先(8.1〜8.2.5)

#8.1 ファイルの入出力

– fileobj=open(filename,mode)でファイルを開く。
– fileobjはopen()が返すファイルのオブジェクト
– filenameはファイル名
– ファイルをどうしたいかの選択。
– rは読み出し、wは書き込みで上書き及び新規作成も可能、xは書き込みだがファイルが存在しない場合のみ。
– modeの第二文字目はファイルのタイプを示す。tはテキスト、bはバイナリの意味。

##8.1.1 write()によるテキストファイルへの書き込み

“`py

>>> poem = “””There was a young lady named Bright,
… Whose speed was far faster than light,
… She started one day,
… In a relative way,
… And returned on the previous night.”””
>>> len(poem)
151

#write()関数は、書き込んだバイト数を返す。
>>> f

元記事を表示

OTHERカテゴリの最新記事