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

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

SQLAlchemyでクラスオブジェクトを辞書型(dictionary)に変換する方法

## 概要
SQLAlchemyの行オブジェクトを辞書型と同じように扱おうとしても型が違うためうまくいきません。
何パターンか方法はあるのですが、2つ方法を紹介します。

具体例があったほうが分かりやすいので、サンプルとして下記のTodoクラスを元に説明します。

“`python
class Todo(db.Model):
__tablename__ = ‘todos’
id = db.Column( db.Integer, primary_key=True )
description = db.Column( db.String(), nullable=False )
completed = db.Column( db.Boolean, nullable=False, default=False )

def __repr__(self):
return f’
“`

## 方法1(`__dict__`にアクセスする)
`__dict__`プロパティにアクセスすることで辞書型の値を取得すること

元記事を表示

Pythonの制御文

# はじめに

ここでは、Python初心者向けに「制御文」について解説していきます。
Python3系の使用を想定しています。

# 条件分岐

条件によって処理を分けたい場合に使います。

## if文

`if`に続く条件式が`True`なら、処理が実行されます。
`if 条件式:`と書いた次の行は、半角スペース4つ分インデントして書き始めます。

“`python:if_1.py
x = 2
y = 2

if x == y:
print(‘xとyは等しい。’)
“`

この例では、`x == y`は`True`となるので、`xとyは等しい。`と出力されます。

また、`else`を入れると、`if`に続く条件式の判定が`True`でなかった場合の処理を記述できます。

“`python:if_2.py
x = 2
y = 3

if x == y:
print(‘xとyは等しい。’)
else:
print(‘xとyは等しくない。’)
“`

さらに、`elif`を入れると、それより上の条件式の判定が全て`False`で、`elif`に続く

元記事を表示

ROS講座107 rosblidgeのclientを作る

# 環境
この記事は以下の環境で動いています。

| 項目 | 値 |
|:-:|:-:|
| CPU | Core i5-8250U |
| Ubuntu | 16.04 |
| ROS | Kinetic |
| Gazebo | 7.0.0 |
| python | 2.7.12 |

インストールについては[ROS講座02 インストール](https://qiita.com/srs/items/e0e0a9dc3f94c2d3348e)を参照してください。
またこの記事のプログラムはgithubにアップロードされています。[ROS講座11 gitリポジトリ](https://qiita.com/srs/items/25a56a6abda41dcf396e)を参照してください。

# 概要
[前回](https://qiita.com/srs/items/d3ec9962f7814d7b16f5)にrosbridge_serverを立てて、ブラウザのjavascriptからアクセスする例を紹介しました。今回は`roslibpy`を使ってrosbridge_serverに接続するc

元記事を表示

「逆転オセロニア」を画像解析して自動ダメージ計算 part4 (ダメージ計算編)

# 逆転オセロニア画面を解析して自動でダメージ計算

逆転オセロニアとはオセロのルールで駒を置いていき、スキルやコンボを駆使して相手のHPを削ったら勝ちという対戦型のスマホゲームアプリになります。

そのためダメージ計算はかなり重要な部分になってきます。

詳しくは

[逆転オセロニア最速攻略wiki](https://xn--cckp5c6czi2302avwxa.gamematome.jp/game/964/wiki/%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8)

で確認してみてください。

その逆転オセロニアのダメージ計算を自動で行うためのプログラムを1年ほど前に作成していましたが、その時の作業手順を思い出しながら少しだけ解説していこうと思います。

元記事を表示

Raspberry PiのデータをGCPに送ってみた(無料)

# Raspberry PiのデータをGCPに送ってみた(無料)
Raspberry PiのデータをMySQLに格納し、Web上で確認できる仕組みを作りたかった。
VPSにサーバーを立てて、データのやり取りをしたい人向け。

※本記事は、Rasberry Pi上で気温データを取得し、送信することを目的としています。

### 開発環境
– Windows10 Pro
– Powershell
– Windows Subsystem for Linux(Ubuntu)

## GCPについて
Google Cloud Platformの略称で、Googleが提供しているクラウドコンピューティングサービスである。
>https://cloud.google.com/?hl=ja

GCPの始め方はこちらを参考に
>https://cloud.google.com/gcp/getting-started/?hl=ja

## Webサーバを立てる
– GCPプロジェクトの作成
– 好きなOSのVMを立てる(筆者は、Ubuntu 18.04 LTS)

※無償枠で作成する場合はこちらを参考に作

元記事を表示

スクレイピングによるProduce 101 Japan練習生順位の可視化

# Produce 101 Japanとは
[PRODUCE 101 JAPAN OFFICIAL SITE](https://produce101.jp)
韓国から輸入されたオーディション番組の日本版で、歌手デビューしてほしい練習生への投票結果が週ごとに発表される番組です。
週が進むと、60位、35位と足切りが進んで脱落者が出てしまいます。

今回は公式サイトからランキング結果をスクレイピングによって抽出し、
最新順位(2019/11/29時点で9週目)までに生き残っている練習生の順位変動を可視化してみました。

### 出来上がりの完成図
練習生の名前は一部伏せております。
![Unknown.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225066/ab35a870-1730-1838-583b-5ab845c67e23.png)

# 主な流れ
1. スクレイピング
2. データ整形
3. ランキングを可視化

### 1. スクレイピングによりランキングを取得する
週ごとの順位を個別に収

元記事を表示

共分散の逐次更新〜式の導出と実装まで

#きっかけ
同じ研究室のメンバーの方から、分散共分散行列の逐次更新がしたいけど何かいい方法はないか、という相談を受けました。そこで見つけたのがこの記事。ここでは平均と分散の逐次更新に関する式の導出を行っています。そこの部分に関する詳しい内容は当該サイトを参照してください。
ここでは、このサイトでは詳細に触れられなかった共分散に関する式の導出を行い、分散共分散行列をPython3で計算します。

#共分散の導出
###文字と重要な式の確認
導出する前に使用する文字や関係式を書いておきます。結構な量の変形をしますので、式を追う途中で分からなくなったらここに戻って考えてみてください。

データ
$x=(x_1,x_2,\ …\ ,x_n),\ y=(y_1,y_2,\ …\ ,y_n)$

データの平均
$\overline{x_n}=\frac{1}{n}\sum_{i=1}^nx_i\ ,\ \overline{y_n}=\frac{1}{n

元記事を表示

Pytest現在時刻テスト(日時固定)

# Pytestで時刻を固定してテストする
Pythonで現在時刻を返すメソッドをテストしたいって場面に出くわしたのでメモ
日付を固定できる freezegun が便利!

# 環境
– Python 3.7.5
– pytest-5.2.4

pytestの場合、pytestのプラグインとして`pytest-freezegun`があります。
pytestのmarkerとして`@pytest.mark.freeze_time`が追加されます。

“`test_sample.py
from datetime import datetime
import pytest

@pytest.mark.freeze_time(‘2019-11-27 11:23:23’)
def test_time():
assert datetime.today() == datetime(2019, 11, 27, 11, 23, 23)
“`

importしても大丈夫

“`get_today.py
def dateget():
return datetime.datetime.t

元記事を表示

条件にあわせてsqlalchemyのfilterを動的に生成する

## 概要

sqlalchemyを利用した以下のような実装を見た。
渡されたユーザーリストから絞るか、テーブル全体から絞るかの差だけのメソッドであり、
(他の条件が完全に一致している)
修正を考えると共通化したほうがいいと思って解決方法を調べた。

“`python
def get_specified_age_users_from_user_list(user_name_list={}, age):
“””
指定されたユーザーの中で特定年齢のユーザーをUserテーブルから取得する
“””
users = session.query(User).\
filter(users.age==age).\
filter(users.name.in_(user_name_list)).\
all()
return users

def get_specified_age_users(age):
“””
特定年齢のユーザーをUserテーブルから取得する
“””
users =

元記事を表示

【ImageJ Fiji,Python】砂嵐画像を任意のピクセル数で簡単に生成する方法

##砂嵐画像
こういうやつです。
Shaderで任意のピクセル数の砂嵐画像がほしいな~となったので作成する方法を調べました。
もっと楽な方法あったら教えて下さい。
![Rundom.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/50ca2558-8fd4-15d3-6651-189db73bb798.png)

##ImageJ Fijiとは?

>ImageJとは、Java というプログラミング言語で書かれた画像解析のためのソフトウェアです。

>Fiji はその ImageJ の種類の内の一つで、元々の ImageJ に様々な機能が追加されているパッケージです。オープンソースである ImageJ は、研究者・開発者により機能の追加が容易にできます。Fiji is just ImageJ (Fiji こそがまさに ImageJ だ)と表現されるように、Fiji はオープンソースである ImageJ の利点を最大限に活かして多くの機能が追加され、まとめられています。

>Fiji をインス

元記事を表示

主要なGAN研究の歴史(2019年11月現在)

### こんな人に:point_up_tone1:
2014年に発表されたGAN(Generative Adversarial Network)ですが、画期的な研究故に最近では派生研究が多くてなにがなんやら。。私自身Google先生をフル活用して色々調べてみたものの、主要な関連研究をわかりやすくまとめた日本語文献はなかなか見つけることができませんでした、残念!ということで、本記事はGAN関連の研究の流れのアウトラインを掴みたい人や、それぞれの研究~~を一々調べるのがめんどくさいから~~論文とコードにサクッとワンクリックでとびたい人向けとなっております。ちなみに本記事は、主に[Generative Adversarial Networks – The Story So Far](https://blog.floydhub.com/gans-story-so-far/)を参考に書かせて頂いています。

#####そもそもGANってなんぞや?という方へ
– @triwave33さんの[今さら聞けないGAN(1)](https://qiita.com/triwave33/items/1890c

元記事を表示

LightFMをMovielensに適用してみた

Factoriazation Machines関連のライブラリを調査している過程で、LightFMというライブラリに出会ったので使ってみました。

最終的には自作のデータセットに適用してみたいのですが、今回はLightFMの使い方に慣れるのをかねてMovielens(映画レコメンデーションデータセット)に適用してみます。

LightFMリポジトリ
[GitHub – lyst/lightfm: A Python implementation of LightFM, a hybrid recommendation algorithm.](https://github.com/lyst/lightfm)

# LightFMとFMの違い

LightFMは、FMとついているのですがFactorization Machinesのライブラリではありません。

LightFMの[論文](https://arxiv.org/abs/1507.08439)を読んでみると、著者らは「LightFMはFMの特別な場合」と述べています。

FMのpython実装を探していたので、多少がっかりしたもの

元記事を表示

【Django】SQLを指定してデータを取得する方法。

Djangoで生のクエリを実行したい場合はraw()を使えば簡単に実現できるみたい。
[参考:Performing raw SQL queries](https://docs.djangoproject.com/en/2.2/topics/db/sql/)

# サンプルModel

“`python:models/users.py
import django.db from models
class Users(models.Model):
name = models.CharField()
age = models.IntegerField()
sex = models.CharField()
“`

# SQLを指定してデータ取得

usersテーブルの年齢が40以上のユーザーを取得する場合

“`python
sql = “SELECT * FROM users WHERE age >= 40”
users = Users.objects.raw(sql)
“`

下記と同じ結果となります。

“`python
users = Users.ob

元記事を表示

RaspberryPi 4でPoseNetを動かしてエッジデバイスのパフォーマンスを比較する

## 【お詫び】
電源を変えて再計測したものに内容を更新しました。
当初公開した記録はRaspberryPi4の電源に不備があり、十分な電力を供給できておらずパフォーマンスが低下していたようです。
クロック周波数は最大周波数で回っているのを確認はしたのですが…

## 【内容】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/454012/42e58808-0428-0e03-436f-4ed47796de2a.png)

**本記事は結果のみです。**

[過去の記事で](https://qiita.com/rhene/items/89e76e606ead8d5e0040)でPoseNetのパフォーマンスを測定したように、ラズパイ4でもパフォーマンス測定してみました。

## 【結果】
## 【実行結果 (カメラ映像)】
|解像度 | Platform |推論時間 (ms) |FrameIO (ms) |FPS |備考

元記事を表示

minicondaでpython環境を作ったときのメモ

# 1. miniconda
– minicondaはanacondaの最小構成版.環境を仮想化するので大本の環境が汚くならない.バージョン管理がしやすい.まだ大して使ってないので細かいことはまだわかりません.

# 2. minicondaをインストールする(Mac OSX : Homebrew)

## 2.1 環境
– macOS Catalina 10.15.1
– Homebrew 2.2.0
– Homebrew/homebrew-core (git revision a6e8; last commit 2019-11-28)
– Homebrew/homebrew-cask (git revision 273f; last commit 2019-11-29)

## 2.2 Install
– homebrew-cask を入れる.すでに入ってる人はminicondaインストールへ.

“`terminal:terminal
$ brew cask
“`
– minicondaをインストール

“`terminal:terminal
$ brew cask ins

元記事を表示

SphinxでPythonコードのdocする自分用メモ

# この記事は
Sphinxを使って、Pythonコードをdocumentationする自分用ノート。
下記にとても素晴らしい記事があります。
– [Sphinxの使い方.docstringを読み込んで仕様書を生成](https://qiita.com/futakuchi0117/items/4d3997c1ca1323259844)

# 仮想環境
## createする
“`bash
# 仮想環境名 sphinx_test ですすめていく
conda create -n sphinx_test python=3.6
“`
## activateする
“`bash
conda activate sphinx_test
“`

# sphinxパッケージのインストール
“`bash
pip install sphinx
“`

# documentプロジェクトの初期化
“`bash
# docsフォルダを作業スペースにする
sphinx-quickstart docs
“`
– いくつか設定に関する質問が出てくるが、デフォルト値のままでよければ Enterキー を押し

元記事を表示

【共起解析】Pythonで簡単に共起解析する!【Python】

#共起解析
前回の記事【https://qiita.com/osakasho/items/0a0b50fc17c38d96c45e 】
では、形態素解析までしかやらなかったので、今度は共起解析もしてグラフ化してみます。

#必要なものをインストールする

“`
pip install pyvis
“`

#コード

“`python
import spacy
nlp = spacy.load(‘ja_ginza_nopn’)
import re
import itertools
import collections
from pyvis.network import Network
import pandas as pd
import time

“””——— 分解モジュール ——–“””
def sentence_separator(path, colname):
black_list = [“test”]
df = pd.read_csv(path, encoding=”utf_8_sig”)
data = df[col

元記事を表示

Python3 M2Cryptoライブラリを使用してSSL証明書の更新期限チェックをする

## 背景
Let’s Encryptで証明書の自動更新をしているドメインで、マニュアルどおりにやっていれば、デフォルト設定で30日を切ったタイミングでSSL証明書の更新が行われるはずですが、更新が実施されているかチェックする必要性があったためスクリプトで実装しました。
実際には下記をチェック対象ドメインリストのコンフィグファイルを食わせるなどして運用しますが、実装に利用したM2Cryptoライブラリの説明があまりなかったので、実際に操作した記録を含めて書き起こしておきます。
本当は使い慣れてるurllibとかで実装できればよかったんですが、SSL証明書の検証ができる方法がよくわからなかったのでM2Cryptoライブラリを利用しました。

## 環境
* Amazon Linux
* Python3

## 利用するライブラリ
* datetime
* ssl
* M2Crypto

## Python実行環境
こんな感じでPyenvを利用してpython3環境を作成済み。

~~~
# pwd
/root/python3

# pyenv versions
system
* 3.

元記事を表示

デバッグをしてみた。

こんにちは!
今回はデバッグの練習をしていこうかなと思います。
[PythonデバッグTips](https://qiita.com/TakesxiSximada/items/45b6d71a44f2706798ed)
[最短で試すPythonテストコード](https://qiita.com/phorizon20/items/acb929772aaae4f52101)
をコピペして試しているだけなので、詳細はこちらをご覧ください!!
##pdbでデバッグ
まずpdbでデバッグします。
以下がデバッグで使用するコードです。

“`python

import pdb;

for ii in range(1, 21):
if ii % 15 == 0:
print(‘Takeuchi Tsuyoshi’)
elif ii % 3 == 0:
print(‘Takeuchi’)
elif ii % 5 == 0:
print(‘Tsuyoshi’)
else:
print(ii)

元記事を表示

強化学習24 Colaboratory+CartPole+ChainerRL+ACER

強化学習22まで終了していることが前提です。

chainerRLのexamplesからACERです。
actor-critic with experience replayの略みたいです。
細かい理論的なことは置いときます。
名著ドラゴン桜の中でも書かれていますが、楽をするためには、まず「すでにあるものに慣れる。」が大切です。

なので、やってみました。

#Google drive mount

“`python

import google.colab.drive
google.colab.drive.mount(‘gdrive’)
!ln -s gdrive/My\ Drive mydrive
“`
#program install

“`
!apt-get install -y xvfb python-opengl ffmpeg > /dev/null 2>&1
!pip install pyvirtualdisplay > /dev/null 2>&1
!pip -q install JSAnimation
!pip -q install chainerrl
“`

元記事を表示

OTHERカテゴリの最新記事