Python3関連のことを調べてみた2019年12月14日

Python3関連のことを調べてみた2019年12月14日

Pythonにおけるクラス

# はじめに

ここでは、Pythonの初心者向けに、「クラス」の基本について解説していきます。
Python3系の使用を前提とします。

# クラスの作成

クラスを作成するときは、`class`を使います。

“`python:class_1.py
class Human():
name = ‘ゆきや’
def say_hello():
return ‘こんにちは。’

print(Human.name)
print(Human.say_hello())
“`

以上のようにしてクラスを作成することができますが、この書き方だと、「ゆきや」以外のインスタンスを生成できません。

あるクラスから複数のインスタンスを生成できるようにするには、`__init__`(コンストラクタ)を利用します。
第一引数は`self`となります。

“`python:class_2.py
class Human():
def __init__(self, n):
self.name = n

def say_hel

元記事を表示

Pythonでユークリッドの互除法を再現

## はじめに
###これは超初心者による備忘録です
今回は初めての投稿です。
pythonをやり始めて一週間。まだまだヒヨッコなので、ネットで見つけた問題集で練習しております。

その時に見つけた問題がうまく解決できなかったので備忘録として記事を残します。

超初心者の方は必見です!!!

###ユークリッドの互除法とは
簡単にいえば、最大公約数を機械的に求めることができる計算方法。

計算方法
①調べたい2つの自然数を用意する
②大÷小をする
③余りが出たら、小さいほうの数字とそのあまりの最大公約数が元の2数の最大公約数と一致している。
④これを繰り返すことで、簡単な数字で最大公約数がわかる

まあこんな感じです。わかりにくくてすいません。

## 実際にやってみる
それではコードを書いていきます。
まずは新しい関数gcd()を定義します

“`Python
def gcd(a,b) #関数を定義
“`
関数を自分で定義するのはdefを使います。

次に、この関数が行う処理を書いていきます。
ユークリッドの互除法では、何度も計算を繰り返さなくてはなりません。
その

元記事を表示

Pythonのstatsmodelsで時系列分析をする

これは[MYJLab Advent Calendar 2019](https://qiita.com/advent-calendar/2019/myjlab)の14日目の記事です。

## こんにちは
+ 宮治研究室に所属する学部3年、サッチーと呼ばれています
+ webとか機械学習は周りのつよつよな方々が書いてくださるので、私は統計っぽいことを書きます

## 今回は
### すること
Pythonのライブラリであるstatsmodelsを用いて時系列分析の基本であるBox-Jenkins法を用いた分析の一連の流れを実装していきます。
時系列分析はPythonの文献がなぜか少ないのが悲しいので、Pythonで時系列分析入門したい人のお役に立てれば幸いです。
### しないこと
長くなってしまうので定常過程や単位根検定の種類等、手法の細かい説明は省きます。あくまでも実装メインで進めていきます。理論部分は有名な[logics of blue](https://logics-of-blue.com/%e6%99%82%e7%b3%bb%e5%88%97%e8%a7%a3%e6%9e%90_

元記事を表示

【AWS S3】S3上のフォルダの存在確認

## 概要
PythonのAWSへのAPIラッパーであるboto3ライブラリを用いて、S3上のあるフォルダ[^1]
またはファイルが存在するかどうかを確認する関数を書いた。

## 動機
S3上のフォルダの有無で場合分けをしたい処理があったのだが、ネット上にはboto2を使っていて現在では実装されていない関数を使った処理だとか、S3上の「ファイル」にしか使えない方法ばかりがあって、「フォルダ」に対する存在判定がほぼなかった。

なので自作しました。

##

## コード例

“`python
import boto3
from botocore.exceptions import ClientError

client = boto3.client(‘s3’)
bucket_name = ‘hoge’
key = “fuga/piyo/bar/” # /まで入れるのがキモだと思う。なくてもいけるかもしれない。確かめてません。

result = client.list_objects(Bucket=bucket_name, Prefix=key)

# 次もキモ。上記のパスが存在

元記事を表示

PythonでQuaternionを使う ~ numpy-quaternion ~

# はじめに
Pythonでクォータニオンを扱うライブラリはpyquaternionとnumpy-quaternionが世界でのトップ2のようですが,日本ではpyquaternionの参考ページを作った人が最初にいたからか,巷に溢れているPythonでのクォータニオン計算はpyquaternionばっか(しかない?)です.

しかし,numpy-quaternionのほうが計算コストが低そうです.
参考: https://www.theoj.org/joss-papers/joss.00787/10.21105.joss.00787.pdf

また,githubのスターの数を比べてもnumpy-quaternionのほうが多いです(2019/12/13時点でnumpy-quaternionが276,pyquaternionが138).

numpyとの親和性も一括変換の扱いやすさなどでpyquaternionよりも良い気がします.使ってみませんか?

githubのリポジトリ: https://github.com/moble/quaternion
ドキュメント: https://qu

元記事を表示

【2020年版】AWSのEC2にPython3をインストールする方法

先日、AWSのEC2にPython3をインストールする機会がありました。

その時に「AWS EC2 Python3」でGoogle検索したのですが、検索結果の上位に表示されたページの情報がいまいちでした。
具体的には、

– pyenv
– virtualenv

を使ってPython3の仮想環境を用意する方法が紹介されていましたが、 Python3の仮想環境を用意する方法は特別な事情がない限りは`venv`を使うべきです。
また、Python3をアプリ開発やデータ分析でガッツリ使う場合を除いては、そもそも仮想環境を用意する必要はないと思います。

Python3の仮想環境を用意する方法として`venv`を使う理由は、[Pythonの公式ドキュメントで推奨されている唯一の方法](https://docs.python.org/ja/3/library/venv.html)だからです。
`pyenv`を避けるべき理由は[この記事](https://qiita.com/shibukawa/items/0daab479a2fd2cb8a0e7)に詳しく書かれているので、興味のある方はこちら

元記事を表示

Pythonの配列っぽいやつらを比べよう

本稿は[NCC Advent Calender 2019](https://qiita.com/advent-calendar/2019/ncc)の14日目記事です.

# はじめに
プログラム書くとき,配列って大事です.
しかし,**Python 配列っぽいの多すぎ問題**があります.
Pythonの標準機能だけでも
`list`,`dict`,`set`,`tuple`
があります.
加えて`numpy`などのライブラリを使い始めるとさらに似たようなものが増えます.

なので,今回はそいつらを以下の4点でまとめて使い分けができるように解説していきます.

1. 概説
2. いいとこ
3. わるいとこ
4. 所感

あくまで**使い分け**のための記事なので,細かい使い方などには触れません.
また,配列が何かはなんとなくわかってる前提で書きます.
さらになるべく簡単な言葉を使って説明します.
* 説明の易化のために,本質とは異なる説明をしている場合があります.

## 対象読者
– Pythonを使い始めたけど,配列多すぎて困ってる
– 他の言語やってたけど,Pythonでの各配列の

元記事を表示

[with構文の理解・応用] Pythonの標準出力の出力先を柔軟に切り替える

Pythonの標準出力(printやsys.stdout)の出力先(file出力, console出力)をwith構文で適宜切り替えながら使う方法を紹介します。

# 動機
以下の様にすると標準出力の出力先を処理に応じて変更できますが、

“`python
import sys
# 一時的にfile出力に変更
sys.stdout = open(‘out.log’, ‘a+’)


sys.stdout.write(‘fugahoge’)

# console出力に戻す
sys.stdout = sys.__stdout__
“`
処理が終わった際に、元に戻す処理が手間なので何かないかなーと考えていて、with構文を使うとfile open()後のclose()が不必要になったことを思い出して、本記事を書くに至りました。

# 本記事に書いてあること
– 標準出力の変更法
– with構文の説明
– with構文での標準出力の出力先の変更法

# with構文
with構文は、以下の様なファイルの読み書きやtensorflowのgradient_tapeなど色々な場

元記事を表示

Python(Bottle)で爆速!WebAPI開発

# 概要
とあるWebアプリ開発時に、別サーバーのWebAPIを呼ぶ必要が出てきました。
開発時には擬似環境が必要となるとのことで、簡単なWebAPIを爆速で構築したメモです。

# 環境

* 言語
Python 3.7.5
理由:Windowsのexeインストーラーがあったから

* Webフレームワーク
**Django**: 大規模向け、機能豊富
**Flask**: 中小規模向け、そこそこの機能、WSGI準拠
**Bottle**: 小規模向け、軽量、WSGI準拠
上記の特性から今回はスピード感ありそうなBottleを採用しました。

* サーバー
Windows Server
Apache 2.4.37 VC15

# Pythonのインストール

下記サイトからインストーラーをダウンロードし、インストーラーを起動
https://www.python.jp/install/windows/install_py3.html

インストール時のオプションで「全てのユーザーにインストール」と「環境変数へパスを追加」みたいなのにチェック入れる。
(チェックを入れないと、OSのログ

元記事を表示

【Mac】コピーした文章を翻訳してポップアップしてくれるスクリプト

英語の勉強のため英論文を読むが、何よりもテンポ感が大切。

時にはGoogle翻訳様に頼ることで、睡魔に打ち勝つ。

その際、いちいちコピペするよりは、コピーのみで翻訳結果をポップアップ表示してくれたら便利。

ということで作ってみました。
(動作するアプリを選べるようにしたので、関係ないアプリでポップアップが出てイライラすることもない←地味に大切)

## こんな感じの動き
![スクリーンショット 2019-12-13 17.24.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392425/46219fa2-1fbf-32e9-27ec-61b6145357a7.png)
↓↓↓↓↓↓↓↓↓↓↓↓↓[Cmd+c]↓↓↓↓↓↓↓↓↓↓↓↓↓
![スクリーンショット 2019-12-13 17.23.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392425/6615b020-9b53-b396-852b-22

元記事を表示

Python3 (Atcorder A問題向け)

#きっかけ
インターン先でPythonを用いた機械学習をする業務が増えたので、C++だけでなくAtcorderでPython3でも解けるように慣れていきたい!
ホントにPythonしらない(笑)

#map関数、split関数
https://atcoder.jp/contests/abc147/tasks/abc147_a

“`python

a,b,c=map(int,input().split())

if a+b+c>=22:
print(“bust”)
else:
print(“win”)

#入力条件 3 4 7(空白を挟んで数値を代入している点に注目!)
“`
**map関数…複数値を入力するときに使われる!**
**split関数…何を基準に分けるか**

#文字列扱い
https://atcoder.jp/contests/abc070/tasks/abc070_a

“`python
N=input()
#int(input())と書かないことで、文字列(配列)となり、文字指定できる!
if N[0]==N[2]:
prin

元記事を表示

Python初学者が手始めに過去10年間の気象データをサクッと簡単に分析してみた。

# はじめに
最近Pythonの勉強を始めました。せっかくなので、これから自分と同じようにPythonを触り始める方に役に立つ投稿をしていきたいと思います。Pythonを一度も書いたことがなかったので、今回はpythonのシンタックスの理解やどのようなライブラリーがあるのかなどを把握しながらシンプルにデータ分析を行っていきたいと思います。

参考本:
[すぐに使える! 業務で実践できる! Pythonによる AI・機械学習・深層学習アプリのつくり方](https://www.amazon.co.jp/%E3%81%99%E3%81%90%E3%81%AB%E4%BD%BF%E3%81%88%E3%82%8B-%E6%A5%AD%E5%8B%99%E3%81%A7%E5%AE%9F%E8%B7%B5%E3%81%A7%E3%81%8D%E3%82%8B-Python%E3%81%AB%E3%82%88%E3%82%8B-AI%E3%83%BB%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%BB%E6%B7%B1%E5%B1%A4%E5%AD%A6%E

元記事を表示

僕のshutil(Python)

自分用のまとめ
随時更新

**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

##pyautoguiって何に使うの?

これもos.path同様ディレクトリ操作

###モジュール読み込み

“`python
import shutil
“`
##頻出操作

“`python
#フォルダのコピー
shutil.copytree()
#第一引数のフォルダを中身ごと第二引数のパスにコピー
#第二引数のフォルダは存在するとコピーできない。

#フォルダの削除、中身のあるなしは関係ない。
shutil.rmtree()
#引数のフォルダを削除。
“`

元記事を表示

僕のNumpy(Python)

自分用のまとめ
随時更新
自分が使った、調べたコマンドを記載
**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

###モジュール読み込み

“`python
import numpy as np
“`

##頻出操作

“`python
#numpyの配列を作る。
array = np.array()

#配列を変形する
array.reshape([行:列])
    #引数の行と列のどちらかを-1にするともう一方の引数から自動計算してくれる

“`
配列なんて「listでいいべ」と思うかもしれないが、numpy.array()の方が、いろいろな操作ができて、なおかつ、listよりもfor文を回す時に遥かに速いらしい。

元記事を表示

僕のwin32gui(Python)

自分用のまとめ
随時更新

**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

#win32guiって何に使うの?
ウィンドウ取得の時によく使うかなぁ

###モジュール読み込み

“`python
import win32gui
“`

##頻出操作
“`python
#ウィンドウタイトルでウィンドウハンドルを取得
win32gui.FindWindow()
#第一引数はクラス名、なければNone
#第二引数はタイトル名

#最前面のウィンドウのウィンドウハンドルを取得
win32gui.GetForegroundWindow()

#ウィンドウの位置を取得
rect = win32gui.GetWindowRect()
#引数ウィンドウハンドル
#返り値は
#rect[0]画面左上x座標
#rect[1]画面左上y座標
#rect[2]画面右下x座標
#rect[3]画面右下y座標
“`

元記事を表示

僕のpyperclip(Python)

自分用のまとめ
随時更新
**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

##モジュール読み込み

“`python
import pyperclip as clip
“`

##pyperclip頻出操作

“`python
#クリップボードにコピー
clip.copy()
#引数にコピーする文字

#貼り付け
clip.paste()
#張り付ける文字。引数指定しなかったら、クリップボードのもんがコピーされんじゃないか?知らんけど。
“`

元記事を表示

Ubuntu 18.04 に Python3.7を入れる

# 理由とか

– Ubuntu 18 .04 は Python 3.6.9が入ってた
– デプロイしたら一部のTypeHintやら、dataclassでエラーに
– 標準のaptに3.7がいるので、入れてalternativesという王道
– 複数端末使う予定なので、Ansibleで出来るか確認したら追記するかも

# コマンド

“` bash
sudo apt install python3 -y

sudo update-alternatives –install /usr/bin/python3 python3 /usr/bin/python3.7 1
sudo update-alternatives –install /usr/bin/python3 python3 /usr/bin/python3.6 2

sudo update-alternatives –config python3
“`

# 確認

`python3 -V`すると、`3.7.5`が帰ってくるはず。
さ、またwheel作らなきゃ……

元記事を表示

PythonでGUIのおみくじを作った

#はじめに
CLIで動くおみくじとブラックジャックがだいたい完成したので、今度はGUIで動くものを作りました。PythonのGUIライブラリはいろいろとありますが、まずは標準でついているTkinterから始めました。

#環境
Ubuntu18.04LTS
Python3.6.9
Tkinter8.6
vim

#コード
ボタンをクリックしたら運勢が表示されます。

“`python
from random import choice
import tkinter as tk

root = tk.Tk()

root.title(‘おみくじ’)
root.geometry(‘640×480’)

def show_luck():
luck_list = [‘大吉’, ‘中吉’, ‘小吉’, ‘末吉’, ‘凶’, ‘大凶’]
luck.set(choice(luck_list))

luck = tk.StringVar()
luck.set(‘?’)

result = tk.Label(root,
textvariab

元記事を表示

僕のpyautogui(Python)

自分用のまとめ
随時更新

**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

#pyautoguiって何に使うの?
なんちゃってRPA作るときとか。
PCの自動操縦

###モジュール読み込み

“`python
import pyautogui as auto

“`

##頻出操作
#####マウス操作

“`python
#マウス移動
auto.moveTo(x,y)
#x座標,y座標に移動

#クリック
auto.click()
#引数に座標を渡すとそこをクリック

#右クリック
auto.rightClick()
#引数に座標を渡すとそこを右クリック

#スクロール
auto.scroll()
“`

#####画像認識

“`python
#画像の中心位置を取得
auto.locateCenterOnScreen()
#引数に画像
grayscale=True #画像をグレースケールで認識

#画像の有無

元記事を表示

僕のurllib(Python)

自分用のまとめ
随時更新

**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

#urllibって何に使うの?
URLへの接続とか操作。
まぁWebDriverあれば、それでいいんだけどね!

###モジュール読み込み

“`python
import urllib
“`

##頻出操作
“`python
#プロキシ設定
proxy = urllib.request.PloxyHandler()
#引数に辞書型でプロキシ設定を渡す。
#こんな感じ→{‘http’: ‘http://proxy.sample.com:8080’}

#urlを開くオブジェクトを作成
opener = urllib.request.build_opener()
proxy= #PloxyHandler()で作ったインスタンスを設定

#urlを開くオブジェクトをインストール
urllib.request.install_opener()
#引数はbuil

元記事を表示

OTHERカテゴリの最新記事