Python3関連のことを調べてみた2020年07月26日

Python3関連のことを調べてみた2020年07月26日

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]]
“`

####追加(1次元配列)
“`python
lst1 = [1, 2]
lst1.append(3)
“`
lst1は*[1, 2, 3]*となる。
appendメソッドの結果に戻りはなく、直ちにlst1に作用されるので下記ではな

元記事を表示

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 random

class Greeting():
def greeting_phrase(self, name):
grt = self.greeting_word()
result = f'{grt}! {name}.’
print(result)
return result

def 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 np

drawing = False
color = (255,255,255)
ix,iy = 0,0

def nothing(x):
pass

def draw_circle(event,x,y,flags,param):
global ix,iy,drawing,color

b = 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

元記事を表示

Python:クラスで多重継承

#Pythonで多重継承
多重継承するサンプルコードは以下の通り。

“`Python:samplePython.py
#
#   2020.07.25 ProOJI
#

# 人は話す
class Person(object):
def talk(self):
print(‘talk.’)

# 車は走る
class Car(object):
def run(self):
print(‘run.’)

# ロボットは飛ぶ
class PersonCarRobot(Person, Car):
def fly(self):
print(‘fly.’)

# インスタンス生成
person_car_robot = PersonCarRobot()
person_car_robot.talk()
person_car_robot.run()
person_car_robot.fly()

# 出力結果
# talk.
# run.
# fly.
“`
`class Person`と`class Car`を継承すると
`class PersonCarRobot`になります

元記事を表示

PulumiでAWSにWEBアプリの最小構成を構築する

# はじめに
Pulumiはプログラミング言語(現在サポートされているのは、JavaScript、TypeScript、python、go、C#)によりインフラをコード管理するためのツールです。

Pulumiを使ってpythonでAWSにWEBアプリを動かすための基本的な構成を構築してみて気づいたことなどを書いてみます。

pulumi環境構築事などについては下記のチュートリアルを参考にしてください
https://www.pulumi.com/docs/get-started/aws/

# 実行環境
python: 3.7.7
pulumi: 2.7.1
aws-cli: 1.18.102

# 構成について
### 構成図
スクリーンショット 2020-07-24 19.32.59.png

### 今回作

元記事を表示

Python でクラス作成してダックタイピングしてみた

#人間クラスと継承、車のクラスで判定

ダックテストというものがあるらしい。Wikipedia様の情報によりますと
“If it walks like a duck and quacks like a duck, it must be a duck”
「もしもそれがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルに違いない」
という考え方のようです。ここから来たのがダックタイピング。

ダックタイピングは例えばRubyだとこんな感じとなります。
##Ruby でのダックタイピング

“`Ruby:sampleRuby.rb
# テスト
def test(foo)
puts foo.sound
end

# アヒルの鳴き声
class Duck
def sound
‘quack’
end
end
# 猫の鳴き声
class Cat
def sound
‘myaa’
end
end
# 実行
test(Duck.new)
test(Cat.new)
“`
出力は

“`Ruby:
# 出力結果
quack

元記事を表示

はじめてのPython3 ~はじめての変数編~

# はじめに
注意点などは[前回](https://qiita.com/kashun0410/items/4113051964d5a1cd0bb5)を参照してください。

## 変数に文字列を入れる
“`
# 3つの文章

print(“勇者は、荒野を歩いていた”)
print(“勇者は、モンスターと戦った”)
print(“勇者は、モンスターをたおした”)

“`
↓実行結果
—–
勇者は、荒野を歩いていた
勇者は、モンスターと戦った
勇者は、モンスターをたおした
—–

もし、「勇者」を「賢者」に修正する時にprint内の「勇者」を1つ1つ変えるのは手間がかかることがある。
そこで使うのが変数
変数を使うと変更する箇所が1つに纏められるといったメリットがある。

※変数にデータを入れることを代入という。

“`
player = “賢者” # 文字データを登録する場合はダブルクォーテーションで囲む

# 文字データが入った変数を表示、連結させるには以下のように記述する

print(player + “は、荒野を歩いていた”)
print(pl

元記事を表示

【python】空気抵抗を考慮した運動方程式の数値解析

Pythonを使って自由落下及びのシュミレーションをしてみようということでまとめました。
#運動方程式の差分化
運動方程式の差分化
$$
F=ma
$$
高校物理でもおなじみの運動方程式である.
大学においては,運動方程式は微分を使った式で書かれることが多く,
$$
F=m\frac{d^2x}{dx^2}
$$
となる.上式より,以下の式が導き出される.
$$
\begin{eqnarray}
\frac{dv(t)}{dt} &=& a(t) \\\
\frac{dx(t)}{dt} &=& v(t)
\end{eqnarray}
$$
よって,この連立微分方程式をプログラムに落とし込めばシュミレーションが可能となる.
ここで微分の定義を思い出してほしい
$$
\frac{df(x)}{dx}=\frac{f(x+\Delta x)-f(x)}{\Delta x}
$$
但し,$\Delta x → 0$なる極限を取る.この関係より
$$
\begin{eqnarray}
a(t) &=& \frac{v(t+\Delta t)-v(t)}{\Delta t} \\\
v(t) &

元記事を表示

PythonでNavier-Stokes方程式を解いてカルマン渦をシミュレーションする

# 概要
非圧縮性のナビエストークス方程式を解き、流体シミュレーションでカルマン渦を作成します。目標は、以下のようなカルマン渦の作成。ここに折りたたんでいるpythonコードを実行すると、2、 3分ほどで以下のようなカルマン渦シミュレーションができます。

pythonコード

“`python
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import scipy.sparse
from sksparse.cholmod import cholesky

def ConvectionTerm(u, v, flag_v, u_old, v_old):
for i in range(1, num_vy-1):
for j in range(1, num_vx-1):
if flag_v[i, j] >= 1: continue

元記事を表示

Pythonでのスプレッドシート操作方法(gspreadの使い方)

Pythonでスプレッドシートを操作する時のライブラリ`gspread`でもよく使う操作をまとめました。
基本的には[公式サイト](https://gspread.readthedocs.io/ja/latest/)で記載されている内容です。

フォーマットを変更するメソッドもありますが、一旦データを扱う関連で記載しています。

## スプレッドシートを扱うための事前準備

“`python
# スプレッドシート連携するのに必要なライブラリをダウンロード
!pip install gspread
from google.colab import auth
from oauth2client.client import GoogleCredentials
import gspread

# 認証処理
auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())
“`

認証なしで実行したい場合は下記の記事を参考にしてください。
https://qiita.com

元記事を表示

Pygameを使ってフラクタルツリー(FractalTree)を作る方法

#0.はじめに
今回作るものがどういう感じで動くのか見てみたい、この記事を読むのが面倒くさい方は[こちら](https://youtu.be/hDjlbHu7V40)(Youtubeの動画)をご覧ください。
#1.実装
“`fractal_tree.py
import pygame
import math
import random

pygame.init()
win = pygame.display.set_mode((750, 650))

def drawTree(a, b, pos, deepness):
if deepness:
branch1 = random.randint(1,10)
branch2 = random.randint(1,10)
c = a + int(math.cos(math.radians(pos)) * deepness * branch1)
d = b + int(math.sin(math.radians(pos)) * deepness * branch2)
pygame

元記事を表示

【Windows10でDocker環境構築】python3 + nginx + Django + PostgreSQL

**Windows10でDockerを使用してDjango環境を構築**

##PCのスペック

| 項目 | スペック |
|:———–|:————|
| CPU | COREi7 |
| Memory | 8G |
| Storage | SSD |

今のところ、普通に動作し開発できています。

#Editor
VSCodeを使用
フォルダやファイル作成からTerminalとしてコマンド入力も行っています。

##準備
#####1.Dockerを使用するにはHpyer-Vを有効化する必要があるため、下記の対応が必要です。

– BIOSの設定変更:
 Intel VTをEnabledにする。
– OS:
 Windows10 Pro 64bit(Hpyer-Vを有効化できるのはWindows10 Proのみのため)

#####2.Python3.8.2(64bit版)のインストール
Pipenvを使用しますので、PCにPythonをインストールします。
***意図的に64bit版をダウンロードしないと、34bit版がダウンロードされま

元記事を表示

半導体デザイナ向け電卓スクリプトの紹介

# はじめに
みなさん、半導体設計時の計算機には何を使用しているでしょうか? Windows付属の電卓? まあまあ使いやすいのですが、筆者にとっては致命的な欠陥があります。それは64bitまでしかサポートしていないこと。
アプリケーションにもよりますが、ASICの設計では128bit越えの演算なども使用することもありますのでこれはいただけません。
そこで自分のニーズにあった電卓プログラムを作成してみましたので、その紹介をしたいと思います。

# 特徴
* Python3で書いたよ
* 結果は常に10進、16進、2進の3種類で表示するよ
* 桁数に制限はないよ。100桁でも1000桁でもコンピュータのリソースが許す限り対応するよ
* 入力は2進、10進、16進を受け付けるよ。任意の場所で’_’で区切っていいよ
* 結果が負の場合は16進、2進表示は2の補数として表示するよ
* Python 3がint型に対して持っている全ての演算をサポートするよ (演算部分はPythonに丸投げしているよ)
* 結果が小数を含む場合は、16進、2進表示は切り捨てて表示するよ
* カーソルキーやCtrl-

元記事を表示

[Python] Django の勉強してみました(Form 作成編)

# はじめに

先日、「*connpass – エンジニアをつなぐIT勉強会支援プラットフォーム*」で Django の*勉強会イベント*に参加してきました!!

そこから Django の面白さ・楽しさに気付いたので(昔から若干の興味も持ってました)独学で勉強してようやく Form の作成ができました。。。(これだけで一苦労です)

![Form 完成画像](https://raw.githubusercontent.com/taiseiyo/taiseiyo/master/figure/form.png)

![User 登録画面](https://raw.githubusercontent.com/taiseiyo/taiseiyo/master/figure/register.png)

コードの全ては[github](https://github.com/taiseiyo/heroku/)にありますので是非ご覧下さい

# Django について

DjangoとはPythonでWebアプリを開発する際に使うWebフレームワークです。勉強には[Python3 Django 超

元記事を表示

【高等学校学習指導要領 情報Ⅰ】教員研修用教材:MeCabによる形態素解析とWordCloudの作り方(python)

# はじめに
今回は文部科学省のページで公開されている情報Ⅰの教員研修用教材の「質的データの分析」についてみていきたいと思います。
ここでは、MeCabによる形態素解析とWordCloudをRで実装する例が書かれています。
今回はその内容をpythonに置き換えていきたいと思います。

# 教材
[高等学校情報科「情報Ⅰ」教員研修用教材(本編):文部科学省](https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416756.htm “高等学校情報科「情報Ⅰ」教員研修用教材(本編):文部科学省”)
[第4章情報通信ネットワークとデータの活用・巻末 (PDF:10284KB) PDF](https://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2019/09/24/1416758_006_1.pdf “第4章情報通信ネットワークとデータの活用・巻末 (PDF:10284KB) “)

#環境
– ipython
– [Col

元記事を表示

OTHERカテゴリの最新記事