- 1. Python3: CouchDB のデータをを削除 (Delete)
- 2. Python3: CouchDB のデータを更新 (Update)
- 3. Python3: CouchDB のデータを読む (Read)
- 4. Python3: CouchDB のデータを作成 (Create)
- 5. python プロパティの良さを探す。
- 6. リストとジェネレータ(データサイエンスの観点から)
- 7. ディープラーニングと物理学でPythonを勉強する①(画像処理)
- 8. pythonでJIS X 0208をShift-JISやUTF-16に変換する
- 9. Python3のノート
- 10. Oxford Dictionaries APIの使い方
- 11. 複数のpython環境の整備(Windows)
- 12. Python パッケージとモジュールの呼び出しについて
- 13. Scrapy で画像ファイルをダウンロードする方法
- 14. 神経細胞モデルの理論と実装
- 15. [Python] np.padの引数”reflect”を理解する
- 16. Numpy行列操作 備忘録
- 17. python3でGTFS Realtimeを読み込む
- 18. Pythonのunittest.Mockでスタブを作って単体テストする
- 19. 【高等学校学習指導要領 情報Ⅱ】教員研修用教材:重回帰分析とモデルの決定(python)
- 20. OpenCV を使ってお絵かきアプリを作る方法
Python3: CouchDB のデータをを削除 (Delete)
“`py:couch_delete.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
#
# couch_delete.py
#
# Jul/27/2020
# —————————————————————-
import sys
import json
import requests
#
# —————————————————————-
sys.stderr.write(“*** 開始 ***\n”)
#
key_in = sys.argv[1]
print(“%s” % key_in)
#
url_json = ‘http://localhost:5984/nagano’
url_key = url_json + ‘/’ + key_in
#
rr=requests.get(url_key)
#
unit_aa = json.loads(rr.text)
#
if
Python3: CouchDB のデータを更新 (Update)
“`py:couch_update.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
#
# couch_update.py
#
# Jul/27/2020
#
# —————————————————————-
import sys
import json
import datetime
import requests
#
# —————————————————————-
sys.stderr.write(“*** 開始 ***\n”)
#
key_in = sys.argv[1]
population_in = int(sys.argv[2])
print(“%s\t%d” % (key_in, population_in))
#
url_json = ‘http://localhost:5984/nagano’
url_key = url_json + ‘/’ +
Python3: CouchDB のデータを読む (Read)
“`py:couch_read.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
#
# couch_read.py
#
# Jul/27/2020
#
# —————————————————————-
import json
import sys
import requests
#
# —————————————————————-
def dict_display_proc(dict_aa):
for key in sorted(dict_aa.keys()):
if ((key != ‘_id’) and (key != ‘_rev’)):
unit = dict_aa[key]
name = unit[‘name’]
str_out = str(key) +”\t”+ str(name)
str_out += “\t” + str(
Python3: CouchDB のデータを作成 (Create)
“`py:couch_create.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
#
# couch_create.py
#
# Jul/27/2020
#
import sys
import requests
import json
#
#
# —————————————————————-
def dict_to_couch_proc (dict_aa,url_collection):
rr=requests.delete(url_collection)
try:
rr=requests.put(url_collection,'{}’)
except Exception as ee:
sys.stderr.write(str(ee) + ‘\n’)
#
for key in dict_aa:
value = dict_aa[key]
json_str = json.dumps (value)
url_target =
python プロパティの良さを探す。
pythonのプロパティに関しての記事です。
`__slot__`やコメント、型ヒントなどは省略しています。
## あまり恩恵がわかりにくい例
1.インスタンス変数のみ
“`
class Data:def __init__(self):
self.x = “a”
“`2.プロパティで書いたパターン
“`
class Data:def __init__(self):
self._x = “a”@property
def x(self):
return self._x@x.setter
def x(self, arg_x):
self._x = arg_x
“`
✴︎1 _は直接アクセスして欲しくない変数につけます。上記のクラスをどちらを使っても同じ結果になります
“`
data = Data()
print(data.x)
data.x = “b”
print(data.x)>>a
>>b
“`この二つの例だけでは恩恵が
リストとジェネレータ(データサイエンスの観点から)
Pythonを勉強し始めると,初期にはリスト”[ ] ”表記を学びます.
そしてだんだんと,リストの内包表記を学び始めて効率的なコードが書けるようになります.
そして次には,「ジェネレータが便利だよ!」という声が耳に入りますが,結局ジェネレータってなんなん・・・となるのではないでしょうか.
このジェネレータの便利な点の初歩をまとめました.# ジェネレータの意義
ジェネレータを用いる意義の1つとしてあげられるのが・使用メモリ量を抑えられる
という点です.これがリスト表記との決定的な違いであり,データサイエンスで大量のデータを読み込む必要があるときに効力を発揮します.
# ジェネレータ表記
“`list_comprehension.py
>>> [2 * num for num in range(5)]
[0, 2, 4, 6, 8]
“`“`generator_object.py
>>> (2 * num for num in range(5))
at 0x109ce7840>
“`上と下の違いは,外
ディープラーニングと物理学でPythonを勉強する①(画像処理)
#1.はじめに
[ディープラーニングと物理学](https://www.amazon.co.jp/&tag=tonejiten-22/dp/4065162629/)を手に入れたのだが,コードはライブラリに依存するため載せていないと記述してあった.そこでこの本を用いてPythonの勉強をしようと考えた.今回の内容はnumpyを使って画像を処理するといった内容となっている.(⚠︎今回の内容にディープラーニングに関する内容は出て来ません.①と書きましたが,今後,新しい記事を書くかは未定(??))
#2.目次
1.はじめに
2.目次
3.とある思考実験
4.コード
5.まとめ
参考
#2.とある思考実験
この本の中にとある思考実験が乗っている.その内容は妖精が目の前のボタンを一分ごとに押す/押さないを選択する事を繰り返し五日間,徹夜で作業させてその結果を行列で表現すると人の顔になっていると言うものである.この妖精は物理学で言うマクスウェルの悪魔である.この労働は労働基準法に明らかに違反している.
_____
第32条
使用者は、労働者に、休憩時間を除き一週間について四十時間を超えて、労
pythonでJIS X 0208をShift-JISやUTF-16に変換する
あることでJISコードを日本語変換したくなったときのやり方が分からなかったのでメモ。
# 方法
公開されているJIS X 0208コードの変換表を用いて連想配列を作成する
下は対応表
> http://unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT
> http://ash.jp/code/unitbl21.htm# プログラム
“`python:jis.pyimport os
ar = []
with open(‘./JIS0208.TXT’) as f:
for t_line in f:
# 先頭がコメントの部分は除く
if t_line[0] != “#”:
sjis, jis, utf16 = os.path.basename(t_line).split(‘\t’)[0:3]
ar.append([jis, utf16])
# 例) ar[‘0x3B3D’] -> ‘0x8695’
# JIS -> UT
Python3のノート
# はじめに
– OS
– Windows10 Pro
– Version
– Python 3.7.3—
# 更新日時
|更新日|内容|名前|
|:–|:–|:–|
|2020.07.26 Sun|新規作成|Yamada|—
# 参考資料
[Pythonエンジニア育成推進協会監修 Python 3スキルアップ教科書 ](https://www.amazon.co.jp/dp/B07YQ1RM1K/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
[公式ドキュメント Python 3.7.8](https://docs.python.org/ja/3.7/)
—
# 最初のプログラム
“` python
print(‘Hello,World’)
“`
—# 基本ルール
—
## 変数の宣言
– ハッシュ記号は変数名に利用できない
– ドルマークは変数名に利用できない
– 数字で始まる変数名は宣言できない
– Pythonのキーワードに使われている文字列は変数に
Oxford Dictionaries APIの使い方
# Oxford Dictionaries APIとは
一言でいえば、かの有名なOxford Universityが提供する35か国語対応の辞書APIです。
月1000アクセスまでは無償で(商用も含めた)利用が可能です。
詳細は[こちら](https://developer.oxforddictionaries.com/about)。## [FAQ](https://developer.oxforddictionaries.com/faq)より抜粋&意訳
> Who built the Oxford Dictionaries API?
>
The Oxford Dictionaries API was built by a team in Oxford Dictionaries which is a part of Oxford University Press. You can find out more about our API here, and more about Oxford Dictionaries here.Q:誰がOxford Dictionaries
複数のpython環境の整備(Windows)
python開発環境を構築する場合、anacondaやjupyterlab等を使う事が多い。しかしながら、筆者はターミナル実行が大好きなためanacondaやjupyterlab等を使用していない。
本記事では、そのような方に向けてpythonの開発環境の整備の仕方やpython2系、python3系など複数の実行環境を使い分ける方法を共有致します。
友人からこの方法を聞かれることが多かったため、今回記事にまとめました。# 開発環境
– Windows10 Home (64bit)# pythonのインストール
まずは以下よりpythonのIDEをインストールしてください。
※この際、インストールしたディレクトリをちゃんと覚えといてください。
カスタムインストールならば、インストール先を明示的に選べるのでオススメです。
Cドライブの見やすいところなどにインストールしましょう。
– [python-2.7.18.amd64-installer](https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi)
–
Python パッケージとモジュールの呼び出しについて
# 概要
– パッケージとモジュールの呼び出し方について記述方法を忘れないように残しておく# 前提
– 下記のようなディレクトリ構成で各ファイルを配置“`python
lesson
|- lesson.py *実施のコードを記載するファイル
|- utils.py *モジュールの内容を記載しておくファイル
|- __init.py__
“`
– utils.py中身“`python
def f(word):
return(word) * 2
“`# 記述方法
## フルパスで指定する場合
– lesson.pyは下記のように記載する“`
import lesson.utils
r = lesson.utils.f(‘hello’)
print(r)※hellohelloと表示
“`## モジュールから呼び出す場合
– lesson.pyは下記のように記載する“`
from lesson import utils
r = utils.f(‘hello’)
print(r)※hellohelloと表示
“`## 関数から呼
Scrapy で画像ファイルをダウンロードする方法
# 目的
Scrapyでクローリングする方法は検索すればよくヒットするが、
ファイルをダウンロードする方法は出てこなかったので方法を記載する。
# 使用する言語、ソフトウェア
* Python3系
* Scrapy 1.73
* pillow
* boto3 ※ファイルをS3に保存する場合のみ必要# 処理概要
ダウンロード対象が、画像か画像以外で使用する機能(Item)が異なるが、大筋は同じ。
また、ファイル保存先をローカルはもちろん、FTP、S3、Google Cloud Storageも指定が可能。# ソースコード
画像ダウンロードにつかうItemsを作成。
“`python:items.py
class ScrapyImageItem(scrapy.Item):
image_urls = scrapy.Field()
“`クローリング用Spiderを作成。
クローリングしたページ上にあるJPG画像URLを抽出し、Itemに画像URLを設定する。“`python:spiders/image_dl.py
class ImageDlSpider(scr
神経細胞モデルの理論と実装
ここでいう神経細胞モデルとは、神経細胞の発火の時間変化を表現可能なモデリングのことを指します。このページは
[1] *E.M.Izhikevich (2004) “Which Model to Use For COrtical Spiking Neurons?”, IEEE transaction on neural networks,Vol.15, No.5,pp.1063-1070*
[2] https://neuronaldynamics.epfl.ch/index.html
に基づきます.以下のように文字を定めます。
$u,v,w$:微分方程式で表される変数,膜電位(参考にした文献によって微妙に文字が違います)
$I$:入力電流
$R$:抵抗値
$\tau$ :時定数## Hodgkin-Huxley model
神経細胞のモデルとして、最も精度が高くて複雑なものが、このHHモデルです。神経科学の世界では最も重要な内容の1つです。膜電位・やイオンチャンネルについての4つの微分方程式で表現されます。
式の詳細はこちらを参照。実装は長いので略。
https://bsd.n
[Python] np.padの引数”reflect”を理解する
## はじめに
np.pad関数の”reflect”がわからなかったので具体例を入れて備忘録がてら残しておきます## “reflect”具体例
文字列 “A”,”B”,”C”の時
“`python
str_list = [“A”,”B”,”C”]
pad_str_list = np.pad(str_list, 3, ‘reflect’)
print(pad_str_list)
[‘B’, ‘C’, ‘B’, ‘A’, ‘B’, ‘C’, ‘B’, ‘A’, ‘B’]
“`
ここで“`pad_str_list[3:6]“`が元の“`str_list“`の要素です.
左右に3個ずつpaddingしています.
左側の3つ“`pad_str_list[:3]“`をみてみると“`pad_str_list[3]=”A”“`を対称に文字列が並んでます.
右側の
Numpy行列操作 備忘録
#概要
C/C++やVBなどに慣れてしまった鶏脳にはなかなかPython(特にnumpy)が入ってこない。
入ってこない部分について、いつも調べていることや、発見したこと随時更新していく。##listとndarray
list型はPython標準の配列チックなやつで、ndarray型はnumpyの配列チックなやつ。
変数名は前者に”lst*”、後者に”arr*”とする。###【list型】
####宣言
“`python
lst1 = []
“`####代入(1次元配列)
“`python
lst1 = [1, 2]
lst2 = [5, 6]
“`####代入(2次元配列)
例えば初めから2次元にすることがわかっていたら下記“`python
lst3 = [[10, 11]]
lst4 = [[20, 21]]
“`なお、list型から下記のように取得することも可能
他の言語に慣れたひとから見ると、気持ち悪い。“`python
lst5 = [1, 2]
a, b = lst5
lst6 = [[11, 12], [21, 22]]
c, d
python3でGTFS Realtimeを読み込む
# python3 GTFS Realtime を読み込む
Googleのpython用の[サンプルコード](https://developers.google.cn/transit/gtfs-realtime/examples/python-sample?hl=ja)が手元のpython3の環境で動かなかったので、urllibの部分をアップデートしたものです。
## 環境構築
GTFS Realtimeはプロトコルバッファ形式でデシリアライズされたバイナリデータです。
プロトコルバッファを何も知らずにデータを展開できるライブラリがあります。
コマンドプロンプトでご自身の環境に合わせて導入してください。
(anacondaにcondaコマンドで入れる方法があれば知りたいです。)“`shell
# Using easy_install
easy_install –upgrade gtfs-realtime-bindings# Using pip
pip install –upgrade gtfs-realtime-bindings
“`## ソースコード
“`
Pythonのunittest.Mockでスタブを作って単体テストする
# 概要
– 自作クラスに対して、`unittest.mock.MagicMock`を使ってモックを作成してテストする。# サンプルコード(挨拶を返すプログラムとテストコード)
## (テストしたいファイル。ランダムで挨拶の語を選んで、挨拶文を返す)
“`
# greeting.py
import randomclass Greeting():
def greeting_phrase(self, name):
grt = self.greeting_word()
result = f'{grt}! {name}.’
print(result)
return resultdef greeting_word(self):
grt = [‘Hello’, ‘Bonjour’, ‘Konnichiwa’]
i = random.randint(0, len(grt) – 1)
return grt[i]if __name__ == ‘__mai
【高等学校学習指導要領 情報Ⅱ】教員研修用教材:重回帰分析とモデルの決定(python)
# はじめに
今回は文部科学省のページで公開されている情報Ⅰの教員研修用教材の「第3章 情報とデータサイエンス 前半」内の「重回帰分析とモデルの決定」についてみていきたいと思います。
「重回帰分析とモデルの決定」の前章ではExcelとPythonを使用して、データの整形・前処理・操作・欠損値と異常値の取扱いなどについて扱っていますが、この章からは「重回帰分析とモデルの決定」を行っていきます。
しかしRでの実装例しか書いていないので、pythonでの実装について考えていきたいと思います。# 教材
[高等学校情報科「情報Ⅱ」教員研修用教材(本編):文部科学省](https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/mext_00742.html “高等学校情報科「情報Ⅱ」教員研修用教材(本編):文部科学省”)
[第3章 情報とデータサイエンス 前半 (PDF:8.9MB) PDF](https://www.mext.go.jp/content/20200702-mxt_jogai01-000007843_004.pdf “第3章 情報と
OpenCV を使ってお絵かきアプリを作る方法
#0.最初に
今回作るものがどういう感じで動くのか見てみたい方は、[こちら](https://youtu.be/RH7_kFyjqTM)(youtubeの動画)からどうぞ。
#1.実装
“`opencv.py
import cv2
import numpy as npdrawing = False
color = (255,255,255)
ix,iy = 0,0def nothing(x):
passdef draw_circle(event,x,y,flags,param):
global ix,iy,drawing,colorb = cv2.getTrackbarPos(‘B’,’image’)
g = cv2.getTrackbarPos(‘G’,’image’)
r = cv2.getTrackbarPos(‘R’,’image’)
s = cv2.getTrackbarPos(‘Size’,’image’)
i = cv2.getTrackbarPos(switch,’image’)if