Python関連のことを調べてみた2020年01月31日

Python関連のことを調べてみた2020年01月31日
目次

【Python】辞書の値に関数を入れたときの実行時間

switch (select) 構文のないPythonではその代わりに辞書を使うことがありますが,
その実行時間に関する注意です.

## 結論

– **関数自体**を入れる:**{ key: func }**
– **短時間**で済む
– 実行されるのはキーによって選択された関数のみ
– **関数の返り値**を入れる:**{ key: func() }**
– 余計な時間がかかる
– 全ての関数が一旦実行され,その返り値が入る

関数の引数が異なる場合は,

– 予め関数の引数に`( *args, **kwargs )`を用意しておきその差を吸収する
– 与える引数自体も辞書にしてしまう
– e.g. `dict_kwargs = { 1: { ‘arg1’: arg1 }, 2: { ‘arg2’: arg2 } }`

という方法が考えられます.

## 例

以下の2つの関数を場合分けして実行する場合を考えます.
(実行時間が知りたいので遅くなるような書き方をしています.)

“`Python
def myfunc1():
n

元記事を表示

沢山のパイプライン(pipeline)を1つにまとめて、一気に片付ける方法

#1.はじめに
 pipelineは、色々な前処理を連結して行う時にコードが簡潔に書けて便利なのですが、今回は、**沢山のパイプライン(pipeline)を1つにまとめて、一気に片付ける方法**がとても便利だったので、備忘録として残します。

#2.下準備
 デモ用のデータセットを、kaggleの **[HR Analytics](https://www.kaggle.com/giripujar/hr-analytics)** からダウンロードします。

 カレントディレクトリーに、**inputフォルダー、outputフォルダー、modelフォルダー**を用意し、ダウンロードしたデータセット **HR_comma_sep.csv** は、**inputフォルダー**に保存します。

![スクリーンショット 2020-01-31 09.54.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209705/1bd80764-c5dc-70b7-2966-5d9f69c4303a.png)

 HR_

元記事を表示

【AWS】NextTokenの有無を判断して値を全部取る【boto3】

おはようアンダーソン君
これは私の備忘録だ。取っておきたまえ

#事の発端
AWS Lambda上でEC2のインスタンス情報(describe_instances)で掘り堀りする某スクリプトがありました。
instanceIDがすべて取れてないことに気づきました。
そう、boto3にはNextTokenという1度に取得に上限値が設定されているAPIがあるのです。

#なんだそれ
boto3のドキュメント読んでくだちい…だと何にもならないので…
例としてこちらをご覧くだしい
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.describe_instances

EC2のdescribe_instancesというAPI
ReturnのResponce Syntaxに
“`’NextToken’: ‘string’“`
という値があるはずです。

1度に取れる値が何件なのか?気になりますよね
**たぶん50件くらい?** APIによるのかな。Max

元記事を表示

NoxPlayerをPythonで動かすための基礎

##背景
UWSCの配布・サポートが終わったので、以前UWSCで書いたマクロをPythonで書き直した
そこで書き直した内容のうち、NoxPlayerをマクロで動かす上で重要な内容をまとめてみようと思った

内容として、Nox操作に必要なADBコマンドの送り方、プログラムとNoxで双方向的な操作、あいまい画像認識の方法など述べる
ソースコードを乗せるが、改変しながら書いたので間違ってるかも

##環境
NoxPlayer 6.6.0.0
Python 3.6
opencv-python 4.1.2.30

##ADBコマンドを送って操作する
NoxPlayerでAndroid操作を自動化するにあたって、一々マウス操作では煩わしい
そのためバックグラウンドで操作する必要があるが、そのためにはADBコマンドを使う必要がある
→Noxにはnox_adb.exeが標準で付属しているため、これを用いる

最初に、PythonでUWSCのDOSCMDに当たる関数は以下のように書ける

“`Python:コード
from subprocess import run, PIPE
def doscmd

元記事を表示

DockerでDjangoの開発環境を構築!(Docker-compose/Django/postgreSQL/gunicorn/nginx)

# はじめに

チーム開発…環境構築がめっちゃめんどくさいっすよね…そんな時はDockerを使いましょう(雑)

この記事はqrunchにあげたものの再投稿になります![元記事](https://nokonoko1203.qrunch.io/entries/FkptWClUcr0a5KoD)

チームでの開発に非常に便利なDockerとDocker-composeを利用してDjango/postgreSQL/gunicorn/nginxの開発環境を構築していきましょう!!

全体の流れはほぼ以下のサイトを参考にさせてもらっていますが、設定ファイル等のほぼ全行にコメントを挟むなど理解しやすいような記事にしたつもりです!
[Dockerizing Django with Postgres, Gunicorn, and Nginx](https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/)

結構長い記事になってしまったので淡々と進めます!

# この記事でやること
– DockerとDo

元記事を表示

Pythonで、デザインパターン「Observer」を学ぶ

GoFのデザインパターンを学習する素材として、書籍「[増補改訂版Java言語で学ぶデザインパターン入門](https://www.hyuki.com/dp/)」が参考になるみたいですね。

ただ、取り上げられている実例は、JAVAベースのため、自分の理解を深めるためにも、Pythonで同等のプラクティスに挑んでみました。

# ■ Observerパターン(オブザーバ・パターン)
Observerパターンとは、プログラム内のオブジェクトのイベント( 事象 )を他のオブジェクトへ通知する処理で使われるデザインパターンの一種。
通知するオブジェクト側が、通知されるオブジェクト側に観察(英: observe)される形になる事から、こう呼ばれる。
出版-購読型モデルとも呼ばれる。暗黙的呼び出しの原則と関係が深い。
分散イベント処理システ

元記事を表示

GeoPandasのインストールに失敗した場合の対処法(Fiona/GDALのエラー)

Pythonの環境によっては、pipを用いたGeoPandasのインストールに失敗するみたいです。
私は失敗しました。
というわけで、解決策を記録しておきます。
(この記事では、GeoPandasのインストール中に”Fiona”関連のエラーが生じた場合の対処法について述べています。)

## Python環境
今回の手順では、Python 3.7.5を使用しています。基本的に3.7系なら動きますので、Pythonのインストールがまだの場合は、こちらからインストールしてください。
https://www.python.org/downloads/release/python-375/

※別の系のPythonでも、多分、インストールに用いるファイル名の「37」という部分をバージョンに合わせて変更すればOKだと思います。

また、同時にpipのインストールもお願いします。
https://qiita.com/suzuki_y/items/3261ffa9b67410803443

## GeoPandasのインストールに必要なもの
このページを見ているということは、一度GeoPandasの

元記事を表示

Vue.jsとDjango-Rest-Frameworkで神経衰弱アプリを作ってみる【その4】~DockerでMySQL構築およびDBマイグレーション編~

[<< その3](https://qiita.com/Butterthon/items/23b7c0794b5aca4182e9) # DockerでMySQLコンテナ作成 ``` concentratio # プロジェクトルートディレクトリ ├── config │ └── ... │ ├── docker │ └── docker-compose.yml └── ... ``` ```docker/docker-compose.yml version: '2' services: db: image: mariadb:latest command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci environment: - MYSQL_ROOT_USER=root - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=concentratio -

元記事を表示

画像分類のためのCNN(1)(初心者向け)

実務では取り扱えていないが、学習として記録に残す。
今回は、畳み込みニューラルネットワーク(CNN)
画像認識の解析に有効らしい…

## CNN
通常のニューラルネットワークに加え、畳み込みの層とプーリング層があることがポイント。

#畳み込み
画像から特徴をデータ化する部分で一番の肝。
画像データは、5×5×1のデータ。
3×3×3のカーネルで重みづけを設定し、全てのパターンの計算をする。以下の図では9パターン。
その結果を特徴マップという。
スクリーンショット 2020-01-31 8.35.35.png

#プーリング
プーリングとは、大きな画像を重要な情報を残しつつ縮小する方法。
これによって、データの次元を減らして、計算速度を抑え学習を進めることができる。

元記事を表示

寿司で理解する Python asyncio

## TL;DR

Python の asyncio で並行処理をするには `asyncio.as_completed` が書きやすい。

## 前置き

[asyncio](https://docs.python.org/3/library/asyncio.html) は async/await 構文を用いた非同期処理ライブラリです。
[Python 3.4 以降で導入され]([Python Release Python 3.4.0 | Python.org](https://www.python.org/downloads/release/python-340/))、[3.7 でいくつか改良が入っています](https://docs.python.org/3.7/whatsnew/3.7.html#whatsnew37-asyncio)。

async/await のちゃんとした説明は世の中に優れた記事がたくさんありますのでそちらに譲ります。例えば、

– [Pythonにおける非同期処理: asyncio逆引きリファレンス – Qiita](https://qiita.com/i

元記事を表示

HomebrewでPythonを2系から3系に切り替える

Python2のサポートが終了したので、3系をメインに切り替えしようと思った。

後、3系のこのプログラムが使いたくなったので

[zTrix/webpage2html](https://github.com/zTrix/webpage2html)

2系が必要になったら後で切り替えられるようにしたい(pyenvとか使えばいいのかな)

## 設定方法

`brew install python3 `でpython3をインストール

“`
~  brew install python3 2065ms  Fri Jan 31 07:51:57 2020
Updating Homebrew…
==> Downloading https://homebrew.bintray.com/bottles/python-3.7.6_1.mojave.bottle.tar.gz
Already downloaded: /U

元記事を表示

「世界で闘うプログラミング力を鍛える本」Python解答例 – 1.2 同じ文字の数を数える

「世界で闘うプログラミング力を鍛える本」Python解答例 – 1.2 同じ文字の数を数える

“`python
import numpy as np

def stringSort(str):
return “”.join(sorted(str))

def permutation(str_1,str_2):

if len(str_1) != len(str_2):
return False

return stringSort(str_1) == stringSort(str_2)

input_str_1 = “no”
input_str_2 = “on”

print(permutation(input_str_1,input_str_2))

input_str_3 = “yes”
input_str_4 = “no”

print(permutation(input_str_3,input_str_4))
“`

元記事を表示

「世界で闘うプログラミング力を鍛える本」Python解答例 – 1.1 重複のない文字列

「世界で闘うプログラミング力を鍛える本」Python解答例 – 1.1 重複のない文字列

“`python
import numpy as np

def isUniqueChars(str):

if len(str)>128:
return False

char_set = np.zeros((128))

for id in range(len(str)):

val = ord(str[id])
if char_set[val] == 1:
return False
char_set[val] = 1

return True

input_str = “sentence”
print(isUniqueChars(input_str))
“`

元記事を表示

[Python3 入門 19日目]8章 データの行き先(8.4〜8.5)

#8.4 NoSQLデータストア

– 非常に大きなデータセットの処理、柔軟なデータ定義、カスタムデータ処理のサポートなどを目的として作られている。

##8.4.1 dbmファミリ

– dbm形式はキーバリューストア(複数のキーと値の組)
– dbmデータストアの性質
– キーに値を代入でき、代入された値は自動でディスク上のDBに保存される。
– キーから値を取得できる。

“`py

#”c”モードは読み書き両用
>>> db=dbm.open(“definitions”,”c”)
#辞書と同じようにキーに値を代入。
>>> db[“mustard”]=”yellow”
>>> db[“ketchup”]=”red”
>>> db[“pesto”]=”green”
>>> db.close

>>> db.close()
#書き直したものが実際に保存されているかどうか確認。
>>> db=dbm.open(“definitions”,”r”)
#キーと値はbyt

元記事を表示

Cudaインストール

1.環境
Windows 10
Visual Studio 2017 (必須ではないかも)
Anaconda 3 (Python 3.7.4)

2.各種ソフトウェアのインストール
各パッケージのバージョンの対応は要注意
2020年1月31日現在、tensorflowのページには下記のように記載されている
https://www.tensorflow.org/install/gpu

Software requirements
The following NVIDIA® software must be installed on your system:

NVIDIA® GPU drivers —CUDA 10.1 requires 418.x or higher.
 ※インストールしていたのは、ver.441.87
CUDA® Toolkit —TensorFlow supports CUDA 10.1 (TensorFlow >= 2.1.0)
 ※https://developer.nvidia.com/cuda-toolkit-archive
CUPTI ships with

元記事を表示

【StyleGAN2入門】10個のアニメ顔で独自学習♬

StyleGANに引き続いて、StyleGAN2でもアニメ顔の独自学習をやってみた。
結論から言うと、config-aは学習できたが、config-bからconfig-fは環境が整っていない。
とはいえ、ほぼコードは見えてきたので、一度まとめておこうと思う。
特に今回は、10個のみのアニメ顔でどこまで学習するかをやってみた。
【参考】
①[NVlabs/stylegan2](https://github.com/NVlabs/stylegan2)
②[stylegan2で独自モデルの学習方法](http://blog.livedoor.jp/tak_tak0/archives/52424358.html)

###やったこと
・環境
・10個のアニメ顔で学習
・出力してみる
・出力画像とオリジナル画像
###・環境
StyleGAN2の環境は以下のとおり

“`
Requirements
・Both Linux and Windows are supported.
・Linux is recommended for performance and compatibility rea

元記事を表示

Atcoder ABC099 C – Strange Bank 別解集

AtcoderProblemでは難易度緑後半でなかなか難しいが、解法は色々あるみたい、、、

#再帰
“`saiki.py
# coding: utf-8
# Your code here!
N=int(input())

def saiki(tgt,i,count,ans):
#print(tgt,i,count,ans,temp[i])

if i==0 or tgt==0:
ans=min((tgt+count),ans)
return ans

num=tgt//temp[i]
while num>=0:
ans=saiki(tgt-num*temp[i],i-1,count+num,ans)
if ans<(count+num): return ans num-=1 return ans temp=[1] n=1 while N>=6**n:
temp.append(6**n)
n+=1

元記事を表示

Pythonでネストしたdictをマージしたい

ネストしたdictをマージしたかったのだけど、適切な記事が全く見当たらない。

とりあえずdictをつくる。

“`python
dict1 = {
“depth1_a”: “x1a”,
“depth1_b”: “x1b”,
“depth2_1”: {
“depth2_a” : “x2a”,
“depth2_b” : “x2b”
},
“depth3_1”: {
“depth3_2”: {
“depth3_3_a” : “x33a”,
“depth3_3_b” : “x33b”
}
}
}

dict2 = {
“depth1_a”: “y1a”,
“depth1_c”: “y1c”,
“depth2_1”: {
“depth2_a” : “y2a”,
“depth2_c” : “y2c”
},
“depth3_1”: {
“depth3_2”: {
“depth3_3_a” : “y33a”,
“depth3_3_c” : “y33c”
}
}
}
“`

結果として欲しいのは、”depthx_a”は

元記事を表示

PythonistaでSCNMaterialのlightingModelを指定する

C4826DB1-F6F1-482A-9F18-57A5E837144A.jpeg

Pythonista では swift の struct や定数?にうまくアクセスできなくてモデルの質感を大きく変えられる SCNMaterial の lightingModel を変更できないと思っていたのですが、方法が見つかったのでご紹介します。

# setLightingModelName_(string name)

lightingModel は SCNMaterial のプロパティですが、変更する時は setLightingModelName_ 関数を使います。

引数は文字列で下記の文字列が指定可能です。

“`python
class SCNLightingModel:
blinn = ‘SCNLightin

元記事を表示

pyenvのバージョンインストール時に、「zipimport.ZipImportError: can’t decompress data; zlib not available」が出た場合

“`
pyenv install x.x.x
“`

をしたら、以下のエラーが出た。

“`
zipimport.ZipImportError: can’t decompress data; zlib not available
“`

以下のコマンドを、bashで流したらOKになった。

“`
bash
CFLAGS=”-I$(xcrun –show-sdk-path)/usr/include” pyenv install 3.7.2
“`

元記事を表示

OTHERカテゴリの最新記事