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

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

中心差分と前方差分

プログラミングで微分をするときは前方差分よりも中心差分が望ましい。理由は中心差分の方が誤差が少ないから。

“`python
import numpy as np

#前方差分
def numerical_diff_forward(f,x):
h = 1e-4
return (f(x+h) – f(x)) / h
#中央差分
def numerical_diff_center(f,x):
h = 1e-4
return (f(x+h) – f(x-h)) / (h*2)

np.float32(1e-3)

def function(x):
return 0.01*x**2+0.1*x

print(abs(0.2 – numerical_diff_forward(function,5)))
print(abs(0.2 – numerical_diff_center(function,5)))

#9.999991725240243e-07
#9.102163467389346e-13
“`

参考
[ゼロから作るDeep Learning ―Pythonで学

元記事を表示

NGINX + NGINX Unit + Flask で PythonのWeb アプリを動かす

# NGINX + NGINX Unit + Flask でPythonのWebアプリ開発

Python で Web 開発をしようと思い、Python の Web アプリの環境構築を行いました。
これまでは、`NGINX <-> uwsgi <-> Flask`という構成が主流でしたが、2018 年 4 月に NGINX 社が軽量な AP サーバー`NGINX Unit`をリリースしました。
今回は NGINX Unit を使用し、`NGINX <-> NGINX Unit <-> Flask`という構成で Web アプリケーションの環境を構築していきます。

## 環境

Web サーバーとして`NGINX`を、AP サーバーとして`NGINX Unit`を、Python の Web フレームワークに`Flask`を使用します。

– OS : CentOS7
– Python : 3.7.4
– NGINX : 1.16.1
– NGINX Unit : 1.10.0
– Flask : 1.1.1

## 備考

サーバーは Vagrant と VirtualBox の仮想環境

元記事を表示

「PythonでFlickr APIから画像取得」に掲載されているテンプレートコードをリファクタリングしてみた(後編)

# 前説
[「PythonでFlickr APIから画像取得」に掲載されているテンプレートコードをリファクタリングしてみた(前編)] (https://qiita.com/satsukiya/items/86c33c3ff40736cfe129) の続きです。 FlickrAPIを使って画像を取得するところまでは終わりました。ですが、逐次処理をしているため多くのキーワードを使って尚且つ多くの画像を取得することは厳しいです。ここでは並列処理に修正してどのくらい処理速度がいい感じになったか確認したいと思います。

# 前回のコード

“`python
from flickrapi import FlickrAPI
import requests
import os, time, sys
import configparser
import time

#画像フォルダパス
imgdir = os.path.join(os.getcwd(), “images”)

#Flickr APIを使う
def request_flickr(keyword, count=100, license=No

元記事を表示

AWSコンポーネントで運用格安の要約システムを構築する

# この記事の内容

– 要約システム(抽出型)を作った
– AWSで運用構成を構築した
– サーバーレス構成でなるべく安くした

# この記事で紹介しないこと

– 要約アルゴリズムの中身

– – –

仕事先で「要約システムを作れないか?」と相談があったので、組んでみました。
仕事先はニュースサイトを運営していて、「投稿されるニュースに要約を掲載したい」というのがモチベーションです。

確かに、大手新聞社のニュースサイトでも3行要約が掲載されていて、記事全文を読んでる時間がない人にはいいコンテンツです。

編集者が自分で要約を書けることに越したことはないのですが、要約の作成というのはなかなか特殊技能のようです(と、編集者から聞いた)

こういう時に自動要約というのは需要があるんでしょうね。

# で、自動要約ってどんなのがあるの?

自動要約には大きくわけて2つのタイプがあります。

まず1つ目は__文生成型__。

これは入力文書の意味をアルゴリズムが解釈して、__いい感じ__(訓練データと似た傾向が出せるように)に要約されたテキストを作成するタイプ。

深層学習が流行りだして

元記事を表示

Djangoで掲示板アプリを1から作るの。(その3)

>その2
https://qiita.com/TuruMaru/items/8b55d1e134f29b8a8dcd

#ちょっとだけCSS
“`
$mkdir static
$touch base.css
“`

プロジェクト直下に`static`ディレクトリを作り、その中にcssファイルを作成します。
staticは静的という意味で、静的なファイルを入れておくみたいです。

“`python:mysite/setting.py
STATIC_URL = ‘/static/’
STATICFILES_DIRS = [os.path.join(BASE_DIR, ‘static’)]
“`

設定ファイルにこれを追加する。

“`html:templates/base.html
{% load staticfiles %} ←これを追加




↓これを追加 Python初心者が「Python文法詳解」を読んだメモ #1

# はじめに
Pythonの勉強をしようと思って触り始めたので、[Python文法詳解](https://www.amazon.co.jp/Python%E6%96%87%E6%B3%95%E8%A9%B3%E8%A7%A3-%E7%9F%B3%E6%9C%AC-%E6%95%A6%E5%A4%AB/dp/4873116880/ref=cm_cr_arp_d_pl_foot_top?ie=UTF8)を読んで「なるほどー」と思ったところをメモります。
普段はJavaをメインで書いているので、おそらくJavaと違うところ中心になると思います。

# 第1章 イントロダクション
– Pythonという名前は「Monty Python’s Flying Circus」(コメディ番組)に由来。
– サンプルコードで「foo」「bar」「baz」みたいなやつは「spam」「ham」「egg」を使う習慣になっている。(コントで使っていたらしい)
– 見慣れないワードはこれ由来だと思っとけ、とのこと。

# 第2章 Pythonの実行
“`py:_の挙動
>>> 1+1
2
>>> _ # 最後に評

元記事を表示

Ruby で Python の for-else っぽいことをやってみる

## きっかけ

[Effective Python メモ 項目12 forとwhileループの後のelseブロックは使うのを避ける](https://qiita.com/mori151311/items/55324d9c685153f929a8) を読んで、逆に Ruby だとどう書くのかが気になった。

## やること

“`python
a = 4
b = 9
for i in range(2, min(a, b) + 1):
print(‘Testing’, i)
if a % i == 0 and b % i == 0:
print(‘Not coprime’)
break
else:
print(‘Coprime’)
“`

`else` 節が実行されるのは、ループが中断されることなく終了した場合です。確かに、直感的な動作ではありません。
これをを Ruby で頑張ります。

## 検討

`else` 節を無視すると、Ruby の場合、

“`ruby
a = 4
b = 9
(2..[a, b

元記事を表示

PythonエアプがTwitterアイコンにナイトモードを実装した話

#経緯
最近なんかUIでダークモードが流行ってますね!集中できるとか出来ないとか~~(僕はマジで集中出来ない)~~
最新のiOSやMacOS、Twitterアプリ等では自動でダークモードに切り替えてくれる機能もついていて~~こっちはちゃんと~~重宝してます
![スクリーンショット 2019-11-05 21.10.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/292807/7da707b2-136f-727d-7b19-bb3803879ac9.png)

ところがダークモードに切り替えるとアイコンが真っ白でなんか浮いてしまっています!!!これはちょっと気になる…折角ならテーマと合わせて暗くしたい…
でも自動変更ごとにちまちまアップロードするのも手間だし…どうすれば…

#概要
茶番はこの辺で、大昔に取得したAPIキーを長らく放置しており折角なのでプロフィールアイコンを自動で変更してくれるプログラムを書いてみました。
当方クリエイターでPython自体がエアプなので至らぬ点が死ぬほ

元記事を表示

DjangoのHerokuへのデプロイと最適化

いろいろと情報が散らばっていて大変だったので、忘備録としてDjangoの設定等をまとめておこうと思います。
動けばいいや精神で適当にまずやって学ぼうというスタイルだったのでいろいろ訂正情報あったら助かります。

## 環境等
Windows10 1903
Python(local) 3.7.0
Python(runtime) 3.7.5
Django 2.2.6
WhiteNoise 4.1.4

## デプロイ周り

あくまでも設定等にフォーカスしているので、手順等は以下の良記事を当たってください。
[Django Heroku デプロイ方法 2018年版](https://qiita.com/okoppe8/items/76cdb202eb15aab566d1)
[DjangoアプリをHerokuにデプロイする方法](https://qiita.com/frosty/items/66f5dff8fc723387108c)
### Static File編
いろいろな記事に書いてあるようにwhitenoiseなんかをかませないとデプロイ後に静的ファイルを読み込めません。ただこれが結構

元記事を表示

既存のDjangoアプリケーションの起動メモ

GithubなどからcloneしたDjangoアプリケーションの起動メモ
仮想環境を使わずにMac上でサクッと動かす方法

# venvでプロジェクト毎のpython環境を準備
venvはプリインされています。

`python3 -m venv [newenvname]`

.gitignoreを見て `[newenvname]`のディレクトリ名を揃えておく

https://qiita.com/fiftystorm36/items/b2fd47cf32c7694adc2e

# mysqlのアップデート

`brew upgrade mysql`
※他のアプリでも利用してる場合は気軽にやらないように

# mysqlでユーザー・DB作成・確認

“`sql

mysql.server start
mysql -u root
CREATE USER username@localhost IDENTIFIED BY ‘password’;
CREATE DATABASE dbname;
GRANT ALL PRIVILEGES ON dbname.* TO username@loc

元記事を表示

Python3でOpenSSLで暗号化したファイルを復号する

Python3を使ってOpenSSLで暗号化したファイルを復号する方法。

結構ありそうなシチュエーションだけど、ファイルの復号・暗号となると文献が少なくちょっと苦労したのでメモ。

開発環境は以下。
・Python3.7.3
・Windows10
・必要なパッケージは随時 pip install で入れる

### importはこんな感じに書く。(あくまで例)

“`python
import binascii
import io
from hashlib import sha256
from Crypto.Cipher import AES
from Crypto import Random
“`

## OpenSSLで暗号化されたファイルの復号

“`python
@classmethod
def decrypt(self,infile, expf, key_length=32):
“””
Decrypt the file.

Parameters
———-
infile : string
File

元記事を表示

CASTableのカラム一覧&データ一覧を取得する

[SAS Viya](https://www.sas.com/ja_jp/software/viya.html)はAIプラットフォームです。PythonやJava、Rなどの言語を通して利用できます。そのSAS Viyaの中で使われているのがCASTableというテーブルオブジェクトです(CASはCloud Analytic Servicesの略です)。今回はCASTableのカラム情報を様々な方法で取得してみます。

## データベースからテーブルを取得する

まずはSAS Viyaに接続します。

“`py
import swat
conn = swat.CAS(‘server-name.mycompany.com’, 5570, ‘username’, ‘password’)
“`

次にCASTableを取得します。今回はIRISデータのCSVを利用します。

“`py
tbl = conn.loadtable(‘data/iris.csv’, caslib=’casuser’).casTable
“`

## カラム名だけを取得する

カラム名だけを取得するのは `fo

元記事を表示

CASTableで条件を指定してソートする

[SAS Viya](https://www.sas.com/ja_jp/software/viya.html)はAIプラットフォームです。PythonやJava、Rなどの言語を通して利用できます。そのSAS Viyaの中で使われているのがCASTableというテーブルオブジェクトです(CASはCloud Analytic Servicesの略です)。今回はCASTableのデータをソートする方法を解説します。

## データベースからテーブルを取得する

まずはSAS Viyaに接続します。

“`py
import swat
conn = swat.CAS(‘server-name.mycompany.com’, 5570, ‘username’, ‘password’)
“`

次にCASTableを取得します。今回はIRISデータのCSVを利用します。

“`py
tbl = conn.loadtable(‘data/iris.csv’, caslib=’casuser’).casTable
“`

## ソートする

ソートは `sort_values` メソッドを使

元記事を表示

CASTableのデータをエクスポートする

[SAS Viya](https://www.sas.com/ja_jp/software/viya.html)はAIプラットフォームです。PythonやJava、Rなどの言語を通して利用できます。そのSAS Viyaの中で使われているのがCASTableというテーブルオブジェクトです(CASはCloud Analytic Servicesの略です)。今回はCASTableのデータをエクスポートする方法を紹介します。

## データベースからテーブルを取得する

まずはSAS Viyaに接続します。

“`py
import swat
conn = swat.CAS(‘server-name.mycompany.com’, 5570, ‘username’, ‘password’)
“`

次にCASTableを取得します。今回はIRISデータのCSVを利用します。

“`py
tbl = conn.loadtable(‘data/iris.csv’, caslib=’casuser’).casTable
“`

## エクスポートする

例えばCSVでエクスポートする場合は次

元記事を表示

CASTableでデータの概要を確認する

[SAS Viya](https://www.sas.com/ja_jp/software/viya.html)はAIプラットフォームです。PythonやJava、Rなどの言語を通して利用できます。そのSAS Viyaの中で使われているのがCASTableというテーブルオブジェクトです(CASはCloud Analytic Servicesの略です)。今回はCASTableでデータの状態を見る際に、その抽出条件を変更する方法を紹介します。

## データベースからテーブルを取得する

まずはSAS Viyaに接続します。

“`py
import swat
conn = swat.CAS(‘server-name.mycompany.com’, 5570, ‘username’, ‘password’)
“`

次にCASTableを取得します。今回はIRISデータのCSVを利用します。

“`py
tbl = conn.loadtable(‘data/iris.csv’, caslib=’casuser’).casTable
“`

## 情報を確認する

どういったデータが

元記事を表示

dockerで機械学習(42) Programming PyTorch for Deep Learning By Ian Pointer

Programming PyTorch for Deep Learning By Ian Pointer
![lrg-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51423/7b77acef-7ab4-06be-988f-9d430a3e9e66.jpeg)

https://www.oreilly.com/library/view/programming-pytorch-for/9781492045342/

非公式?
https://github.com/falloutdurham/pytorchupandrunning

“`shell-session:OS
$ docker run -p 8888:8888 -it kaizenjapan/pytorch /bin/bash
“`

“`shell-session:docker/anaconda
# jupyter notebook –ip=0.0.0.0 –allow-root
“`

ブラウザで
localhost:888

元記事を表示

(事例)Django(DRF) + uWSGI + Nginx + MySQLのdocker-compose.ymlサンプル

### 前提

* DjangoRestFrameworkを用いたAPIとDjango管理画面とDjangoとは関係のないバッチのアプリケーションです。
* ./web 配下がDjangoです
* このdocker-compose.ymlはMac(ローカル環境)でこのアプリケーションを作業ツールとして使用することを想定しています。
* ホスト側のログディレクトリが./docker内にある点など注意。
* DBのセキュリティとかもないので注意。
* cloneして `docker-compose up –build` で動くように作ったつもり
* この記事が使えそうなお困り症状
* /adminで静的ファイルが読み込めない(cssが効かない、画像が表示されない)
* uWSGI + Nginxでうまく動かない

### 主要ファイルたち

* docker-compose.yml

“`
version: ‘3.7’
services:
app:
container_name: sample-app
image: sample-app

元記事を表示

matplotlibでヒストグラムの縦軸を相対度数(棒の高さの合計=1)や相対度数密度(ヒストグラム全体の面積=1)にする

# この記事で行うこと

matplotlibで、ヒストグラムの縦軸を

– 度数(matplotlibのデフォルト)
– 相対度数
– 相対度数密度

にして描画します。

## 参考ページ(感謝します)

[matplotlib.histのnormedが変](https://jb102.blogspot.com/2017/10/22-histogram.html)
[matplotlib:histgram normedの挙動](https://qiita.com/ponnhide/items/571e896915306f42c0c1)
[統計学② pythonを使って、確率密度関数(正規分布、標準正規分布)を覚えちゃう!](https://qiita.com/yossyyossy/items/601446f832f480d1d54a)

## 用語の整理

計算式は、

– 度数密度 = 度数 / 階級幅
– 相対度数密度 = 相対度数 / 階級幅

らしいです。
下記のPythonコードで実験したところ、hist関数で「density=True」を指定すると、縦軸が相対度数密度に

元記事を表示

Google ColabでPytorch使って機械学習

# Google Colabはすごい
Google Colabはすごくて、無料でGPUが簡単に使えるみたいです。AWSで使う方法も教えてもらったけど桁違いに簡単で泣いてしまう
Pytorchで機械学習をやる話です

### メリット
* 無料
* 簡単
* 何もダウンロードとかインストールしなくていい
* すごい

### デメリット
* 連続で12時間しか使えない
使い続ける(?)方法はあると聞いた気もしますが、長時間の学習とかには向かないみたい。練習には十分
* 強いGPUとしょぼいGPUがガチャらしい
* ローカルファイル、フォルダがそのままじゃ使えん

うまく使うためにいろいろなQiitaとか見ながらやってみて、できたやり方を書いておきます。たぶん古い情報とかもたくさんあって結構手こずった

## ColabにPytorchをインストール & GPUを使えるようにする
ランタイム>ランタイムのタイプを変更>GPUを選択

“`
!pip install torch
import torch
torch.cuda.is_available()
“`

を実行してTru

元記事を表示

NetworkXのエッジに長さなどの情報を設定する

# はじめに

NetworkXで、辺の繋がりだけでなく、辺の重みや特殊なプロパティを設定したい。

# 対処法

“`python
import networkx as nx
import random

# 適当に生成
G = nx.random_tree(10)

# Gのエッジ集合を取り出す
for (u, v) in G.edges():
G.edges[(u, v)][‘weight’] = random.randint(3, 10)

“`

NetworkXの各辺(u,v)(タプル)は

“`py
G.edges[(u, v)]
“`
で取り出すことができます。つまり、タプルをキーとする辞書になっています。

この辺G.edges[(u,v)]は辞書となっているため
`weight`をキーとして、そこに重さを入れればいいです。

他にも
`love`, `long`など入れようと思えば入れることができます。

元記事を表示

OTHERカテゴリの最新記事