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

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

CentOS7上のpyenvで作った環境にpython3.8.0をインストールした

# はじめに

pyenvを使う機会があったので、ついでにpython3.8(現時点で最新)をインストールしてみました。
その際の、記録です。
pyenvは簡単に言うと、OSにインストールされているpythonと干渉せずに、別バージョンのpythonをインストール・実行できるツールです。
この記事は、2019年11月時点で作業記録です。

## 環境
– CentOS Linux release 7.6.1810
– git version 2.20.1
– pyenv 3.7.5
– python 3.8(pyenv環境にインストールするバージョン)
– python 2.7.5(OSにインストールされているバージョン)
– python3 3.6.8(python3としてインストールされているバージョン)

※gitは、pyenvのインストールに使用しているだけです。

## pyenv で環境作成

python 3.8 は、pyenvで作った環境にインストールします。
これにより、OSにインストールしているpythonと別バージョンのpython環境を用意できます。
pyenv

元記事を表示

初心者がUE4でルービックキューブ風なものを作って強化学習用のライブラリにしたい #4

前回に引き続き初心者がUE4を絡めたPythonライブラリを作れないか色々進めていく記事です(ほぼ自分のための備忘録としての面が強い・・)。

最初 : [#1](https://qiita.com/simonritchie/items/e8d84c2941b5bd2862f5)
前回 : [#3](https://qiita.com/simonritchie/items/97d20347424e7c08cddc)

# Pythonスクリプトでのimportなどはできるのか試してみる

PyActorのブループリントにていずれかのPythonモジュールを指定するわけですが、その際に他のScriptフォルダー以下のPythonモジュールをimportできるのか試してみました。
ue.logなどでコンソール出力してみた感じ、どうやらPyActorのブループリントで指定したもののみ実行されるようです。
他のモジュールのimport自体はエラーが発生しないようなのですが、そのモジュールで追加してある関数などを呼び出すとエラーになってしまいます。
pipでインストールしてあるものは問題なく使え

元記事を表示

Python3ではじめるシステムトレード:為替レートの予測(翻訳)

為替レートの予測についての論文の冒頭の部分を翻訳していきます。徐々に数を増やいしていきます。

# [Empirical exchange rate models of the seventies](https://scholar.harvard.edu/files/rogoff/files/51_jie1983.pdf)
Do they fit out of sample?
Richard A. Meese
Kenneth Rogoff
Journal of International Economics 14(1983) 3-24

## 70年代の為替レートモデルの実証:アウトオブサンプルで適合は可能か?

 本稿はさまざまな構造、時系列為替レートモデルをアウトオブサンプルでの予測の正確性を用いて比較する。対ドルに対するポンド、マルク、円、実効為替レートの1-12か月先のレートをランダムウォークモデルとその他のモデルを用いて予測した。ここで検討する構造モデルはフレキシブルプライスマネタリーモデル(Frankel-Bilson)、スティッキープライスマネタリーモデル(Dornbus

元記事を表示

Pythonで競技プログラミングする際の入力チートシート

## はじめに
Pythonで競技プログラミングを始めたので、入力部分の実装時間を短縮するための入力のテンプレートを作成しました。自分用の備忘録のようなものです。

## 環境
Python 3.5.x(AtCoderで動作したのを確認)

## 本編

### 基本となる入力用のクラス
“`python

class Scan():

def intarr(self):
self.line = input()
array = self.line.split(‘ ‘)
num_array = [int(n) for n in array]
return num_array

def strarr(self):
self.line = input()
return self.line.split(‘ ‘)
“`
### 入力する行数が決まっている場合(整数)
“`python
def main():
sc = Scan()
n = sc.intarr()

元記事を表示

Python で Microsoft Azure の FaceAPI とPCカメラをリアルタイム接続

# 福岡で開催された学生ハッカソンにて発表した作品です。

## 概要

– PCのカメラに映った映像をコマ送りでFaceAPIに送信
– 判別結果とともにカメラの映像を出力するものとなっています。
– 判別は性別、年齢、感情分析の結果を反映させています。
– リアルタイムといいつつ、while文でその時その時の映像を
写真として切り取っているため、コマ送りの出力結果となりました。
– 作品と言っておいて、僭越ですがこちらをかなり参考にし、
ミックスさせたものとなっています。

– DATUM STUDIO さんの[Azure Computer Vision APIとFace APIをPythonから利用する][DATUM STUDIO]
– qiita内の記事[Pythonで顔認識を爆速で自分のPCで実験してみる][qiita openCV]

## ソースコード
“`python:FaceApi.ipynb
write_file_name = ‘./tmp.jpg’

import http.client, urllib.request, urll

元記事を表示

CNNを用いた画像認識 馬と鹿

# はじめに
初めての機械学習を行う際に、画像認識に興味があり、やってみようと思ったのですが、どういったアプローチにしようか迷っていました。
そこで、Aidemyの「CNNを用いた画像認識」というコースがあったので、それを受講し、CNNをやることにしました。

最初に考えたのが、競馬が好きなので競走馬の分類。
【競走馬 = 騎手が乗っている馬】として考えて、競争馬でも裸馬でも、【馬】として認識できるものを作ろうと考えました。

**分類は馬と鹿にしました。**
理由は、馬の画像収集の過程でCIFAR-10のデータセットも使わさせて頂いたのですが、CIFAR-10の中にdeer(鹿)があったからです。
動物として似ているものに挑戦してみたかったので、ちょうど良かったです。

####TODO
1. 画像収集
2. 収集画像の処理
3. 画像の水増し
4. 画像を学習/検証データにする
5. モデル構築と保存
6. 結果のグラフ化
7. 別の画像でテスト

##画像収集
画像収集には、以下を利用しました。

– Google Images Download
– bing_image_dow

元記事を表示

GitHub Actionsで一定間隔ごとにAtCoderのレーティングのグラフを撮ってみた

## はじめに
先日AtCoderを始めた[@wawawatataru](https://twitter.com/wawawatataru)と申します。
レートはまだ茶色にすら到達していませんが楽しく参加しています。
![screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23369/2bb11d6c-411d-3e5e-aec2-64b305d51920.png)
と、AtCoder参加者の方には上図のようなレーティングの画像をTwitterなどで投稿している方も多いと思います。

今回はこの作業を今後やらなくてもいいように自動化したいと考え以下の対応をおこないました。

* GitHub Actionsを利用し、一定間隔ごとにAtCoderのレーティング画像を取得
* GitHub Pagesで上記の画像をOGPに設定したページを作成
* OGPを設定したページのURLをTwitterに投稿し固定ツイートにする

上記対応を行うと、下のツイートのようにOGPが自動で更新される(はず)

元記事を表示

Python3で国会議事録検索APIを叩く

国会議事録APIを叩く機会があって少し詰まったのでメモ代わりに書いておきます。
環境構築

“`
> pip install pipenv
> pipenv –python 3
> pipenv install requests
“`

指定した日付から現在までの特定発言者の議事録を取得します。

“`collect_data.py
import datetime
import urllib.parse
import requests

if __name__==’__main__’:
url = ‘http://kokkai.ndl.go.jp/api/1.0/speech?’
year, month, day = map(int, input().split())
speaker = input()
today = datetime.date.today()
date = datetime.date(year, month, day)
f = open(‘text.txt’, ‘w’)
while True:

元記事を表示

【Python】無名関数 Lambdaを使ったリストの便利なソート方法

#課題

リストをソートするとき”sorted関数”を使用して並び替えをしているのがオーソドックスな方法です。課題としてsorted関数を使用するとき、デフォルトの状態でソートを行うと文字順にソートされます。

文字列に含まれている数字、文字数など凝ったソートをする場合にはどうしたらいいか?
そういった凝ったソートを行うときなどに、keyにlambdaの条件を設定することで複雑なソートも可能になります。

はじめは無名関数Lambdaについて説明しますんで、知っている方はスキップを~

##無名関数 Lambda について

通常は関数を定義するときに名前を付けなければなりません(当たり前ですが⋯)
関数は多くの行を要する処理を繰り返し使用する際に便利です。

通常、関数を定義する際には以下の文法で記述します。

“`python:
def func(引数):
return 戻り値
“`

引数は入力したい値、戻り値は出力したい値と思って差し支えありません。

試しに関数を定義して使用してみると

“`python:func.py
#二次関数を定義
def func(

元記事を表示

Pythonのモジュール(Python学習メモ④)

## Pythonのモジュールについて
ポイント

* モジュール=Pythonの定義や文が入ったファイル
* ファイル名は`*.py`
* モジュールの中では、グローバル変数`__name__`の値としてモジュール名が設定されている

“`python:sample_module.py
def func1(n):
return n

def func2(n):
return n

“`
“`python:Pythonのインタープリタにて
>>> import sample_module
>>> sample_module.func1(‘kawauso’)
‘kawauso’
“`

## モジュールのimportについて
ポイント

* モジュールには関数定義の他実行可能な文を入れることもできる
* これらの文はimport時に実行されるため初期化として使う
* モジュールはそれぞれがプライベートなシンボル表を持つため、呼び出し側との名前の衝突を気にする必要はない
* モジュール内のグローバル変数にアクセスするには、modulename.itemnameの形

元記事を表示

ダブルイコールの使い方 忘備録

今思うとなんでこんなので躓いたのか馬鹿らしくなるが自分の経験の少なさから手間取ってしまった問題について。

ダブルイコールを使ってTrue Falseを if文で判断しようとした時、
3行目のような書き方をしてしまった。
これでは lists == True で計算されてしまうためFalseが返ってくる。
よって()を使うことにより解決した。

“`list.py
lists = [“a”,”b”,”c”]
print(“a” in lists) >>> True
print(“a” in lists == True) >>> False
print((“a” in lists) == True) >>> True
“`

元記事を表示

Ansible Towerで追加したAnsibleモジュールを動かす方法

# Ansible Towerとは
AnsibleをWeb GUIで実行できるRed Hatの製品です。
動作部分では同じくAnsible Enginが動いていますが、サーバーの中に入ってAnsibleを動かすのとは少し勝手が違いました。
Ansibleをインストールすると使える標準モジュールではなく、追加で入れたモジュールを動かす為にどうしたら・・・となったのでメモ。
環境は以下です。

* RHEL: 7.7
* Ansible Tower: 3.5.3
* Ansible version: 2.8.2
* Python: 2.7.5 & 3.6.8

# Ansible モジュールの追加について
標準のAnsibleでモジュールを追加するお作法については[公式の手順](https://docs.ansible.com/ansible/latest/dev_guide/developing_locally.html
)ですんなりいきます。
今回ハマったのは、サーバーの中に入ってAnsibleを実行すると上手くいくけど、Towerからじゃうまくいかない。。
他のエラーも併発したのでは

元記事を表示

EC-CUBE4で会員データを大量に作成する

###環境
・EC-CUBE4.0.3
・PostgreSQL10

##はじめに
EC-CUBEで会員データや商品/受注データを大量に作るときには、EC-CUBE3系の頃から[nanasessさん](https://qiita.com/nanasess)作成の Fakerを使った` GenerateDummyDataCommand ` コマンドに大変お世話になっています。
基本的に言って、` GenerateDummyDataCommand `で事足りますが、今回は別の方法で、50万件、100万件の会員データをサクッと作る方法を載せます。

###概要
50万件の会員データを作るということは、50万行のCSVファイルを作り、’ \COPY ‘コマンドを流す(PostgreSQLの場合)ということに帰着します。
今回は、数万のファイルもすぐに書けるPythonでCSVファイルを作ります。

##Google Colaboratoryでの実行
Jupyter Notebookのコードは[こちら](https://colab.research.google.com/drive/1PoTuI

元記事を表示

ボソンの生成/消滅演算子で記述される演算子による状態発展をコードに落とし込む

$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$

## 前置き
いつもとタイトルの雰囲気を変えてますが、今回も光量子計算の話題です。
光の量子状態に演算子(量子ゲート)を作用させる計算について、[こちらの記事](https://qiita.com/ryuNagai/items/b830a4433d317362b9fd)ではガウス状態間の変換に限りガウス分布の平均、分散に対する比較的単純な計算で書けることを紹介しました。

今回はガウス状態に限定されない、より一般的な形式の実装を試みます。

## 演算子の記述

一般的に、光量子における演算子は生成・消滅演算子を使って記述します。
今回は簡単な例としてDisplacement operatorを扱います。

$D(\alpha) = \exp(\a

元記事を表示

DiscordとGoogleSpreadSheetのファイル送受信

# はじめに
DiscordとGoogleSpreadSheet(以下GSS)を連携して書き込んだり読み込んだりしたい!という考えから作成したもの

結果できたものは
1. Discordで送信したメッセージや、ファイルのURLをGSSに書き込み
2. GoogleAppsScript(以下GAS)で送信したメッセージやファイルをDiscordに書き込み
3. 送信したファイルのURLをGSSに書き込み

使用言語は以下
– python3.6.4
– HTML5
– JavaScript
– Vue.js
– GAS

ちなみにVue.jsを使ってるのは筆者の趣味。使わなくても問題ないはず(試してないけど)

# Discordから送信

## 全体ソースコード
“`python:DiscordBot.py
import discord
import gspread
import json

client = discord.Client()

#ServiceAccountCredentials:Googleの各サービスへアクセスできるservice変数を生成します。
from

元記事を表示

Django: 文字列からクラスをImportする

# Django 文字列からクラスをImportする。
サンプルの[Repositoryはこちら](https://github.com/Saknowman/django_setting_sample_project/)です。
Repositoryは[APPごとのSetting](#)と兼ねているのでご了承ください。

Djangoで文字列からクラスをImportしたいときありますよねー。
そういう時は、**django.utils.module_loadingのimport_string**を使います。

“`python
from django.utils.module_loading import import_string

cl = import_string(‘rest_framework.permissions.IsAdminUser’)
“`

## 使い道
自分はPermissionを文字列の配列でsettings.pyに設定し、RestFrameWorkのViewsetで使いたかったときに使用しました。

“`python:project/se

元記事を表示

Django: 再利用可能なAPPの設定をDjangoRestFrameWorkにならって実装

# Django: 再利用可能なAPPの設定をDjangoRestFrameWorkにならって実装

Djangoで開発しはじめて、再利用可能なAPPを作り別のProjectでInstallしたときに、APPで設定しているデフォルトの設定が変更できない….
となったのでアプリケーションごとの設定を**project/settings.py**から変更できる方法を探していました。
**Django Rest Framework** にいいコードがあったので、参考にやってみました。

簡単な **Todo Task Api** を例にやってみます。

動くサンプルの[Repositoryはこちらから](https://github.com/Saknowman/django_setting_sample_project/)

## Django Rest Framework での例

“`python:project/settings.py

REST_FRAMEWORK = {
‘DEFAULT_FILTER_BACKENDS’: [‘django_filters

元記事を表示

【機械学習】不均衡なデータへの対応めも

# はじめに

普段の業務の傍ら趣味程度に機械学習やら統計学やらいじっているのだけど、ちょっと前に所謂不均衡なデータの分類問題に触れることがあったので、その対応方法についてメモします。

# 対象読者

本記事は初歩的なことしか書いていないけど、以下のような人には読む価値あるかも。

* 機械学習初心者
* 不均衡でないデータの分類問題はやったことあるけど、不均衡なデータはよくわからない人

# 不均衡なデータとは
そもそも「不均衡なデータとは何か」について

学習データの内、片方のクラスのデータの数がもう片方のクラスのデータの数より極端に多いデータのことです。

例えば以下のように、陽性のデータの数が陰性のデータの数の100分の1のようなデータですね。
病気の検査や異常値の検出などがイメージしやすいかと思います。

| クラス | データ数 |
|——-|———–|
| 陽性 | 100 |
| 陰性 | 10000 |

## 不均衡だと何が問題なの?

工夫せず普通のデータと同じようにモデルに

元記事を表示

Python の http サーバー処理

サーバープログラム
>> Nginx + fcgiwrap という環境で作動します。
>> Get と Post の両方に対応します。
>> aa と bb を与えて、和と差を計算して返します。

“`py:test_aa.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# text_aa.py
#
# Oct/11/2019
#
# ———————————————————————
import sys
import json
import cgi
#
# ———————————————————————
ff=cgi.FieldStorage()
#
str_aa = ff.getfirst(“aa”,””)
str_bb = ff.getfirs

元記事を表示

Pythonで並列処理をするなら知っておくべきGILをできる限り詳しく調べてみた

最近Pythonでオーケストレーション層(BFF)のアプリケーションを書く機会がありました。

Python3.4からはasyncioが導入され、I/Oバウンドな処理はシングルスレッドでも効率的に捌けるようになったものの、依然としてCPUバウンドな処理はGILが存在することで、シングルプロセス下では並列処理が制限されます。

このことから言語特性として、CPUバウンドよりもI/Oバウンドな処理を複数捌くことに適していると見ることができます。言語選択の意思決定をする際に重要なファクターとなりますが、そのためにはGILの仕組みを改めて知る必要があると思い、調べてみました。

## GIL(グローバルインタプリタロック)とは

そもそもGILとは何のことでしょうか。

正式にはGlobal Interpreter Lock(グローバルインタプリタロック)といい、PythonやRuby等の言語に見られる排他ロックの仕組みです。この2つの言語だけを見ると動的型付け言語に特徴的と思われるかもしれませんが、そうではなく、むしろC言語との協調に関わっています。

### PythonはC言語で実装され

元記事を表示

OTHERカテゴリの最新記事