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

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

日常生活にも役立つ!?コスパ最強の実験計画法をPythonで半自動化


# 概要
– 実験回数を大幅に効率化する「実験計画法」について(ざっくり)説明します。
– 実験計画法の手続きがやや複雑なため、手続き部分をPythonで自動化します(今回の目的)。

# 実験計画法とはなにか(どう役に立つか)

>実験計画法(じっけんけいかくほう、英: Experimental design、Design of experiments)は、効率のよい実験方法を設計(デザイン)し、結果を適切に解析することを目的とする統計学の応用分野である。
> [Wikipediaより](https://ja.wikipedia.org/wiki/%E5%AE%9F%E9%A8

元記事を表示

vagrant環境のseleniumで、chromeブラウザをGUIで動作させる

## はじめに
CentOSは基本CUIのため、seleniumを実行するときはheadlessモードで動かしていましたが
画面確認の度にスクリーンショットを撮っていて開発効率が落ちていました。
そこで開発時は非headlessモード、運用時はheadlessモードと分けたいと思いました。

以下のような方には当てはまるかと思います。

・ホストOSに開発環境を構築して汚したくない
・開発環境は統一しておきたい
・スクレイピングをする際、スクリーンショットでちまちま画面確認するのが面倒

## 環境
・macOS Catalina(ホスト)
・vagrant + CentOS7(ゲスト)
・python + selenium(chromedriver)

## X11サーバーをインストール

X11サーバーをMacOSにインストールします。
現在は同梱していないそうなのでXQuartzプロジェクトから入手します。

XQuartz
https://www.xquartz.org/

## Vagrantfile

以下の1行を追加することで、Linux側のDISPLAY環境変数が設定さ

元記事を表示

AtCoder Beginner Contest 147 参戦記

# AtCoder Beginner Contest 147 参戦記

## A – Blackjack

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

“`python
A1, A2, A3 = map(int, input().split())

if sum([A1, A2, A3]) >= 22:
print(‘bust’)
else:
print(‘win’)
“`

## B – Palindrome-philia

2分で突破. 書くだけ.

“`python
S = input()

result = 0
for i in range(len(S) // 2):
if S[i] != S[-(i + 1)]:
result += 1
print(result)
“`

## D – Xor Sum 4

46分くらい?で突破. Cを提出したら WA3 で諦めてこっちに取り掛かったのでよく分からず. ビットごとに累積 XOR をするだけ. だけって言ってもコーディングは中々大変. Python で書いたら TLE になったので、Go で書き直した. `% 10

元記事を表示

推しVのYoutubeアーカイブの各種情報を保存するためにどうすればいいのかを考えた

推しVがいなくなった。理由もわからずに。

Vtuberを推していると、いつかはVがいなくなるという事態に直面することになるだろう。引退、卒業、**契約解除**―呼び方は色々とあるだろうが、実態としてはVの死と表現するのが相応しい。そして残念ながら今のV界では、Vの死が訪れた際にはチャンネルごと抹消されるという事例が多く見られる。そうなれば彼、彼女(あるいはその他生物)の生きた記録の多くは残らず、思い出を振り返ることすらできない。

だから思い出を記録として残すため、Youtubeのアーカイブを保存するという手段を検討する。「そんなことして何になる」だとか、「余計に悲しくなるだけ」といった意見もあるのは知っているが、究極の自己満足として、具体的にどうやれば残せるのかを考えてみた。

### 何を残したいのか
まず、保存するべき対象を設定した。

1. 動画に付随する情報(詳細や再生数や高評価数)
2. サムネイル
3. 動画のコメント
4. 動画のライブチャット
5. 動画本体

こんなところか。
動画本体はもちろんであるが、在りし日の足跡を追うには再生数やコメント、さらにはライブ

元記事を表示

ガウス過程回帰 Numpy実装とGPy

# はじめに
こんな回帰直線引いちゃっていいのと疑問に思うようなグラフを見ることがあります。
例えば

“`python
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams[“font.family”] = “Times New Roman” #全体のフォントを設定
plt.rcParams[“xtick.direction”] = “in” #x軸の目盛線を内向きへ
plt.rcParams[“ytick.direction”] = “in” #y軸の目盛線を内向きへ
plt.rcParams[“xtick.minor.visible”] = True #x軸補助目盛りの追加
plt.rcParams[“ytick.minor.visible”] = True #y軸補助目盛りの追加
plt.rcParams[“xtick.major.width”] = 1.5 #x軸主

元記事を表示

SinGanで遊んでみた

## はじめに
ICCV 2019 Best Paperを受賞したSinGanで遊んでみました。
論文:[SinGAN: Learning a Generative Model from a Single Natural Image](https://arxiv.org/abs/1905.01164)
付録は[こちら](http://openaccess.thecvf.com/content_ICCV_2019/supplemental/Shaham_SinGAN_Learning_a_ICCV_2019_supplemental.pdf)。

###SinGanの特徴

* パッチサイズごとに、パッチの内部分布(内部統計量)※を学習する
* 画像1枚で学習できるため、大量の画像を必要としない
* 応用範囲が広い
* paint-to-image
* editing
* harmonization
* super-resolution
* animation

※論文中ではinternal statistics of patch や internal distributi

元記事を表示

Djangoで継承したModelにおいて、継承元Modelにリレーションを貼りレコードを作成する方法

# 概要

Djangoで継承したModelにおいて、継承元Modelにリレーションを貼りレコードを作成する方法

継承元Modelにリレーションを貼る際に、継承元Modelが意図しない値に変更される場合があるので
注意・回避方法含め書きます!

~~Djangoの挙動に惑わされました~~
Django大好きです

# 動作を確認した環境

Python==3.7.4
Django=2.2.3

# 結論

Model継承時に暗黙的に定義される `{モデル名}_ptr` フィールドにModelオブジェクトを与えます

このとき、 `Model.save()` や `Model.objects.create()` を行うと継承元のModelが意図しない値に変更される場合があるため `.save_base(raw=True)` を使用します

“`py
# モデルの定義
from django.db import models

class Parent(models.Model):
parent_column = models.CharField(max_len

元記事を表示

【自分メモ】python -v / python -V

#びびった
Cloud9上のPythonのバージョンを知りたくてうっかり
`python -v`と打ったらいっぱい出てきて焦った

“`
import _frozen_importlib # frozen
import _imp # builtin
import sys # builtin
import ‘_warnings’ #
import ‘_thread’ #
import ‘_weakref’ #
import ‘_frozen_importlib_external’ #
import ‘_io’ #
import ‘marshal’ #

元記事を表示

Python で`pause`の代わりになるもの

# 備忘

Python で C 言語でいう`System(‘pause’);`に値するコマンド,つまり,入力待ち状態を作るためには,

“`python
input()
“`

と書けばよい.

これで,ループ内で1反復ずつ状態を確認しながらプログラムを実行することができる.

元記事を表示

都内の鉄道路線をアートっぽく可視化したい(データ収集編)

時計を見たら当日の15時だったので急いでプログラムを書きました.
本当はCTF布教記事にしようかと思ったのですが準備時間が足りなかったです.

**閑話休題**

以前バイト先の同僚とProcessingの本を見ていたら,航空航路をアートっぽくした画像が載っていました.これって東京の鉄道路線でも出来そうじゃね?と思ったのでやってみます.が,やっぱり時間が足りないので今日はデータ収集編です.

# 先に結論(コード)
完全に使い捨てコード.

“`python:stations.py
import requests
import json
from tqdm.autonotebook import tqdm
import os

#
# http://express.heartrails.com/api.html#line
#

# 東京都を走る路線を取得
lines_url = “http://express.heartrails.com/api/json?method=getLines&prefecture=%E6%9D%B1%E4%BA%AC%E9%83%BD”
lines_re

元記事を表示

Djangoでwebサービスを作ってみた振り返り2

Djangoでwebサービスを作ってみました。完成はしましたが、ふんわりやっていたところを再度調べました。

#views.pyで使ったあれこれ

##クラスビューで使ったもの
例:

“`views.py
class ThreadView(ModelFormMixin, generic.DetailView):
model = Group
form_class = CommentCreateForm

def form_valid(self, form):
group_pk = self.kwargs[‘pk’]
comment = form.save(commit=False)
comment.create_user = self.request.user
comment.post = get_object_or_404(Group, pk=group_pk)
comment.save()
return redirect(‘:group_thread’, pk=group_pk)

def post(self, request, *

元記事を表示

python版lombokのdaikokを作り始めた

# はじめに

– pythonを10数年振りに触った人が2日がかりで書いてます
– [github/daikok](https://github.com/positrium/daikok)
– Getter実装しました
– Setter実装しました(もれなくGetterがついてきます)

# 使い方

– クラスに`@Getter`をつけます
– getterを付与したい変数はクラス変数で宣言してください。

“`python
from daikok.annotation import Getter

@Getter
class Foo:
__value = 0
__yeah = 0

def __init__(self, v, y):
self.__value = v
self.__yeah = y

“`

と書くと下記のテストコードが通ります。

“`python
foo = Foo(1, 100)
bar = Foo(2, 200)

self.assertEqual(1, foo.value)

元記事を表示

[python]変数のメモリ消費量確認

この記事は[古川研究室 Advent_calendar](https://qiita.com/advent-calendar/2019/flab) 8日目の記事です。
本記事は古川研究室の学生が学習の一環として書いたものです。内容が曖昧であったり表現が多少異なったりする場合があります。

# はじめに

同じタスクの機械学習のアルゴリズムを比較する軸として、学習の安定性(初期値の依存度)・説明可能かどうか・(教師あり学習では正解率 (Accuracy)・適合率 (Precision)・再現率 (Recall)という指標もあります)そして、「計算量」があります。

メモリに載らないくらい計算量が大きくなりやすいアルゴリズムだと状況(時間・計算リソース)によっては採用しづらいですね. (ex: $\mathcal{O}(データ数^3)$ だと一回の学習のデータ数はせいぜい1000($1000^3=10 Billion \fallingdotseq 10GB$)に押さえないとですね.

また、計算量が少なくても実装的にその計算になっていない場合もあります.

本記事では、pythonのプロ

元記事を表示

Pythonで数独を解く

#はじめに
hello?初めてのアドベントカレンダーですがいつも通り書いていきます。今回はpythonで数独を解いていこうと思います。
※コードは[こちら](https://github.com/Tiger59/sudoku)に挙げておくので主要なコードのみ説明します。

#数独のルール
1. あいているマスには1から9までの数字が必ず1つ入る。
* 縦9マスに1から9までの数字が1つずつ入る。(重複はしない)
* 横9マスに1から9までの数字が1つずつ入る。(重複はしない)
* 太線で囲まれた3×3のブロックのどれにも1から9までの数字が1つずつ入る。(重複はしない)

(例)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/267562/0419d580-d3b0-bba3-646b-3d982ee92c3f.png)

#実装

今回は最適化問題でよく使われる[mypulp](https://pypi.org/project/mypulp/)モジュールを使います。データはエクセルに格納し[openpyxl](

元記事を表示

Pythonで3次メッシュコードをWKTに変換する

備忘録レベルですが、pythonで3次メッシュコードをWKTに変換する関数を作成いたしました。
地味ですが、いざ必要なときに計算できなくなってしまいがちです…

“`python

def toWKTfromMeshCode3(mcode3: ‘mesh code(str)’):-> ‘wkt(str)’
south = (int(mcode3[0:2]) * 80 + int(mcode3[4:5]) * 10 + (int(mcode3[6:7]))) * 30 / 3600
west = (int(mcode3[2:4]) * 80 + int(mcode3[5:6]) * 10 + (int(mcode3[7:8]))) * 45 / 3600 + 100
north = south + 30 / 3600
east = west + 45 / 3600
wkt = ‘POLYGON(({e} {n},{w} {n},{w} {s},{e} {s},{e} {n}))’.format(s=south, w=west, n=north, e=east)

元記事を表示

VSCodeにvenv環境を認識させる方法とそのメリット

# 環境
* macOS
* VSCode 1.40.1
* Python3.6.0

# VSCodeにvenv環境を認識させる
“`.vscode/settings.json“` に下記を追加(下記は“`python -m venv .venv“`で仮想環境を作成した場合)

“`.vscode/settings.json
“python.venvFolders”: [
“.venv”
]
“`

VSCodeで“`Command+Shift+P“`で「Python: インタープリターを選択」を選択し、表示された一覧から上記で設定した“`.venv“`のPython(./venv/bin/pythonなど)を選択する

# メリット
Linterが仮想環境にインストール済みのライブラリを認識してくれるため、「インストール済みなのにNot found警告が出る!」なんてことにならない。

元記事を表示

Presentation Support System with Python3

# はじめに
N高等学校プログラミングクラス1年の [@seigo2016](https://twitter.com/seigo2018)です。
[N高アドカレ8日目](https://qiita.com/advent-calendar/2019/n-highschool)になります。
きちんとした記事ということで,何を書こうか悩んだのですが,現在のメインプロジェクトの「糸かけ曼荼羅色シミュレーター」についてはU22等で沢山お話したので,今回は最近の短期プロジェクト「PSS ~Presentation Support System~」についてお話します。

# PSS ~Presentation Support System~ の目的
皆さんも人に何かを伝える際にPowerPointやGoogleSlideなどを使用してプレゼンテーションを行うことが多々あると思います。N高プログラミングクラス(以下プロクラ)でも毎月LTが開催されています。
そこでプレゼンテーションを支援するシステムを制作することにしました。
## 機能
1. リアルタイムでコメントが流れる
2. スマートフォン等から

元記事を表示

slackbot備忘録 ~正規表現を使ったリクエスト編~

# はじめに
pythonを使ってslackbotを作成した備忘録パート3

[前回][1]から、だいぶ時間がたってしまった…

皆さん、よくこんなサンプル見ませんか?

> @respond_to(“^test\s+\S.*”)

私は最初、「こういうものなんだ!」と何も考えずに使っていた

しかし、よくよく考えると()内は正規表現だと気づいた(遅い)

ということで「こんな respond_to 作りたいなぁ」という悩みがあったので、正規表現で解決してみた!

今回はその正規表現をまとめてみた

お品書きは以下の通り

* そもそも正規表現って何?
* よく使う正規表現
* 「文頭(文末)の文字に反応してほしいなぁ」
* 「test 〇〇みたいにコマンド形式に反応してほしいなぁ」
* 「複数の言葉でも、1回だけ処理を実行してほしいなぁ」
* 「複数部、可変的にとりたいなぁ」
* おわりに

# そもそも正規表現って何?
*正規表現*とは、「文字列の集合を一つの文字列で表現する方法の一つ」である

PHP, Perl, Python, Ruby などで使用することができる

Pyt

元記事を表示

Djangoインストールからアプリ作成までのチュートリアル

#ほぼ初心者の方へ、Djangoの説明
**コチラの記事はかなりDjango初心者の方向けに、インストールからやってみようという方向けの記事として作成されています。**

DjangoはPythonのプログラミング言語を用いたアプリケーションフレームワークです。Python を知らない方はDjangoを聞くと「は?」となる方が多いです。

そのため、認知度は低いほうかと思います。
しかし、覚えるポイントが簡単で、慣れれば使いこなせること間違いなし。
Djangoから始めてみようと思った方は私と一緒な感覚をお持ちかと思います(^^)/
シンプルな言語でスラスラかけるように補助しますので、頑張りましょう。
きっとかけるようになります。こんなプログラミングが苦手な私でも扱えるのですから!

##やってみよう!DjangoはAnaconda3を使ってインストールをする
リンク先で各インストール方法が記載されているので参考にしてみてください。
パソコンに無料でDjangoのインストールを行います。
1.[Anaconda3のインストール](https://weblabo.oscasierra.n

元記事を表示

Pythonでデータ保存するときにディレクトリがないエラーを防止する関数

# Pythonでのデータ保存の問題
jsonやcsvとしてデータを書き出すとき,ディレクトリ指定でディレクトリがないときにエラーになってしまいます.

エラー例: `FileNotFoundError: [Errno 2] No such file or directory: ‘./save/json/result.json’`

なので,関数を一つ挟むことで,ないときは自動生成するようにしているので,その関数を置いておきます.

# ディレクトリ自動生成関数
“`python
import os

def set_up_directory(filepath):
path_elements = filepath.split(‘/’)
path_elements.pop(-1)
os.makedirs(‘/’.join(path_elements), exist_ok=True)
“`

# 一応解説
`/`で一旦パスをバラして,配列にし,ディレクトリだけを取り出すために最後尾を削除しています.
これを再び`/`で結合し,`os`モジュールの`makedi

元記事を表示

OTHERカテゴリの最新記事