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

Python3関連のことを調べてみた2020年12月29日
目次

AWS EC2でPHPのexec()でpython3系実行

[Amazon LinuxでPython3系を使う](https://michimani.net/post/aws-using-python3-on-amazonlinux/)
こちらのブログの方法で解決しましたが、少し自分なりに足りないと思ったところを補足して紹介します。

### 大前提:Pyenvのインストール先は、/usr/bin/..にしよう。

他のブログでは、pyenvのインストール先は/home/ec2-user/…のところにあると思うのですが、ec2-userディレクトリは権限が厳しいので、その中にpython3をインストールして、例えば、exec(/home/ec2-user/…/bin/python3.7)とかしても、

“`
permission denied
“`

になります。
だからといって、homeディレクトリや、ec2-userディレクトリの権限を書き換えると、セキュリティの仕様?か何かで、scpやsshでサーバーに入れなくなるという恐ろしいことが起きます。(もしそうなっちゃったら、AWS ec2のインスタンスページからターミナルを開けば解

元記事を表示

PyMySQLで任意のDictCursorを作って、NULLのときにNoneを返さない方法

# 前置き

PyMySQL使ってますか?
え?ORM使ってるからそんなもん使わない?

まぁまぁ、ORMはORMでめんどくさいときがあるじゃないですか。
チョクでSQL書いたら楽なときもあるでしょ?

# でPyMySQL

“`python
import pymysql.cursors

# Connect to the database
connection = pymysql.connect(host=’localhost’,
user=’user’,
password=’passwd’,
db=’db’,
charset=’utf8mb4′,
cursorclass=pymysql.cursors.DictCursor)

with connection.cursor() as curs

元記事を表示

MacBook ProでPyAutoGUIの座標が正しく取れない?

# 動かない
Python + PyAutoGUIでMacBook Pro(15-inch, 2018)のDockにあるアイコンをクリックさせようと、こんなコードを書いたら動かなかった。

“`python:click.py
import pyautogui as pag

position = pag.locateCenterOnScreen(‘target_app.png’, confidence=0.9)
pag.click(position)
“`
※target_app.pngはDockのアイコンをスクリーンショットした画像

Dockが一瞬だけピクッと動いて、ターゲットのアプリケーションが起動しない。

Dockのアイコン位置の座標を調べたところ、locateCenterOnScreenで取得した値と、アイコンにマウスを当ててposition()で取得した値がぜんぜん違うことに気づいた。

**locateCenterOnScreenで取得した値**
“` x=3046, y=2335 “`

**pyautogui.position()で取得したマウスカーソルの値

元記事を表示

RequestsモジュールのHTTPリクエストメソッドに必要な引数を理解せよ

どうも、遅刻魔の月歩人です。
この記事は[JSL(日本システム技研) Advent Calendar 2020年 14日](https://qiita.com/advent-calendar/2020/jsl)の記事です。

バックアップ用に購入したポータブルHDDが初期不良で交換した矢先に買い替えたmacも初期不良で画面が一部映らなくなり、絶望的な状況で書いています :innocent:

## この記事を書くに至った経緯

少し前RequestsでHTTP/IFを実装する場面で、HTTPメソッドを実行するときのパラメータを理解していなかったがためにリクエスト先でparseが失敗していたにも関わらず、「APIが繋がらない!」と騒いだことがありました。
自分や他のエンジニアが同じ轍を踏まないために備忘録として残そうと思ったのがきっかけです。

## まずRequestsが対応しているHTTPメソッドを把握

requests/api.pyより

* requests.get(url, params=None, **kwargs)
* requests.post(url, data=N

元記事を表示

Jetson Nano L4T 44.1 (2020/10/21) with Tensorflow

#Introduction (Abstract)

Jetson Nano L4T 44.1 has installed cuda Library 10.2. And I tried to install tensorflow with ‘python3 -m pip’, but it was not working properly. Finally, I can make tensowflow working with gpu by other install index.

#Problem

I download the SD card image file from [Nvidia Jetson Download Center](https://developer.nvidia.com/embedded/downloads) and follow the instruction and installed L4T 44.1 on my Jetson Nano.

Then, I tried install tensorflow for python:

$ pyth

元記事を表示

ラズパイのカメラモジュールで撮影した画像を表示する

手持ちのラズパイ4にカメラモジュールV2.1を付けたので、試しに簡単なプログラムを作成してみました。その際色々苦労したので、調べ直す必要がないようにメモを残します。

#openCVを使ったプログラム
openCVにはカメラ取り込む機能もあり、また画面表示の機能もあるので非常に便利です。

“`python:test.py
import cv2
import pygame
camera = cv2.VideoCapture(0)
camera.set(cv2.CAP_PROP_FRAME_WIDTH,640)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT,480)
while True:
_,image = camera.read()
#エフェクトを追加する行
cv2.imshow(‘camera’,image)
key = cv2.waitKey(1)
if key != -1:
break
camera.release()
cv2.destroyAllWindows()
“`

ウィンドウ上でキーを押す

元記事を表示

速いと噂のPythonのVaexについて詳しく調べてみた。

結構前にPandasやDaskなどよりも大分高速と話題になっていたPythonのVaexライブラリについて、仕事で利用していきそうな気配がしているので事前にしっかり把握しておくため、色々調べてみました。

# どんなライブラリなのか

– Pandasと同じように行列のデータフレームなどを扱うことのできるPythonライブラリです。
– Pandasと比較して膨大なデータの読み込みや計算などを高速に行えます(数十倍~数百倍といったレベルで)。
– 計算上のメモリ効率がとても良く、無駄の少ない実装になっています。
– Daskのように計算が遅延評価されたりと、通常はメモリに乗りきらないデータでも扱うことができます。
– Daskのように並列処理で計算を行ってくれます。
– Pandasと比較的似たインターフェイスで扱うことができます。

# この記事で触れること

主に以下のVaexのトピックに関して本記事で触れます。

– インストール関係
– カラムへのアクセス
– スライス制御
– 各種要約統計量の計算
– データの選択(selectとselection)
– 各種データの読み込み

元記事を表示

【備忘録・随時更新】AzureFunctionsのあれこれ

# 1. はじめに

この記事は、[前回の備忘録](https://qiita.com/gsy0911/items/61198607476ac686ce6f)にて書けなかった事柄について
書いていきます。

項目は以下の通りです。
また、この記事は随時更新予定です。

| 節 | タイトル | 内容 |
|:–:|:–|:–|
| 2 | API Manaegment と統合 | AzureFunctions をドメインを付与した URL で実行可能にする |
| 3 | Azure Identity の利用 | 他のリソースへのアクセスを許可する |

# 2. API Managementと統合

この説では、API Management を利用して、作成した AzureFunctions の`HttpTrigger`の利便性を高くします。

## 2.1 Azure FunctionsのHttpTriggerの不十分な点

API Management を作成する前に、 AzureFunctions の`HttpTrigger`では不十分な点について説明します。
それは、A

元記事を表示

【Python】配列生成(初期化)時間まとめ!!!

#まとめ!!!
最初に結果をまとめておこう.いわゆる「時間のない人のための」というやつである.かなり見やすくまとまっていると自負している.

##1d配列

| Code | Mean | Stdev. | Runs | Loops |
|—————————-|———|———|——–|———|
| `np.empty(N) ` | 1.76 µs | 32 ns | 7 runs | 1000000 |
| `np.zeros(N) ` | 11.3 ms | 453 µs | 7 runs | 100 |
| np.ones(N) | 14.9 ms | 182 µs | 7 runs | 100 |
| np.zeros_like(np.empty(N)) | 19.9 ms | 320 µs | 7 runs | 100

元記事を表示

taichiの使い方① ~mp4とgifで出力~

## 経緯
[taichi](https://github.com/taichi-dev/taichi)に昨日からハマっているので、色々使ってみつつ、適宜情報を共有していこうと思います。今回は、作成したグラフィックをmp4またはgifとして出力するやり方を紹介します。詳しくは公式の[ドキュメント](https://taichi.readthedocs.io/en/stable/export_results.html#export-images)をご覧ください。taichiについての初めての記事は[こちら](https://qiita.com/Hiroaki-K4/items/e8cdb8c4e79c0d1a6670)です。

## ffmpegのインストール
動画を出力する際にtaichiはffmpegを使用するので、インストールしていない場合はインストールしてください。

“`
$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt install ffmpeg
“`

## スクリプト
今回は試しにリポジトリのexamplesの中に

元記事を表示

タコヤキオイシクナールをセグメントツリーへの乗せる際の考え方

タコヤキオイシクナールはセグメントツリーの応用の典型例として有名です。今回はこの問題を解いていきます。
対象読者は、セグメントツリーのMaxやSumの実装を理解しており、タコヤキオイシクナールをどのように乗せればよいのか?と悩んでいる人を対象とします。

# 概要
まず、満点解法を考慮せずに考えます。

– n 個の箱があり、それぞれの箱$a_i (0 \leq i < n)$にはa,b の変数が書かれている。すべての箱は1,0のパラメータを持つ。 - 各箱はxという値が入力されると $ ax + b $を出力する。 - 今、1という数字を$a_0$にいれる。$a_i$に入力された値の出力は$a_{i+1}$に渡され - すべての箱を通過した時の値は何か? # 例 2つの箱があり、それぞれパラメータが、$2,2$と$3,3$だったとします。 1つ目の箱の入力は1のため、$1 * 2 + 2$で5が出力されます。 2つ目の箱の入力は5のため、$5 * 2 + 3$で18が出力されます。 # 箱の合成 隣接する箱は合成することが可能です。今、1つ目の箱のパラメータをa,bとし、2つめの

元記事を表示

【強化学習】KerasでApe-Xの解説・実装(失敗)

インターネットで調べて実装しているのでまだ理解し切れていない部分もあります。
虚偽・暴論等が記事内にありましたらご指摘願います。

#はじめに
今回は、2018年の時点で2番目に優秀というApe-Xという強化学習アルゴリズムを実装してみました。

#Ape-Xとは
Ape-Xは2018に発表された強化学習アルゴリズムで、R2D2に次いで2番目に優秀とされている強化学習アルゴリズムです
論文は[こちら](https://openreview.net/pdf?id=H1Dy—0Z)

構造的には、
 ・Double Deep Q Network
 ・multi-step bootstrap target
 ・Dueling Network
 ・Prioritized Experience Replay
 ・分散学習
no
4つを組み合わせたアルゴリズムです。順番に説明していきます

## Double Deep Q Network (DDQN)
DDQNについては[このサイト](https://qiita.com/sugulu_Ogawa_ISID/items/bc7c70e6658

元記事を表示

[エラー]IOPub message rate exceeded. The notebook server will temporarily stop sending output to the client in order to avoid crashing it.

## エラー
IOPub message rate exceeded.
The notebook server will temporarily stop sending output
to the client in order to avoid crashing it.
To change this limit, set the config variable
`–NotebookApp.iopub_msg_rate_limit`.

# 原因

iopun_data_rate_limit の値がとても小さく設定されているため。

# 解決策

設定されている値を変更する

jupyter notebook –NotebookApp.iopub_data_rate_limit=10000000000

# 追記

最新版では修正されている。

# 参考

https://github.com/jupyter/notebook/issues/2287

元記事を表示

【備忘録】初めてのAzureFunctionsのデプロイ

# 1. はじめに

この記事では、AzureFunctions でよく私が利用している`HttpTrigger`と`TimerTrigger`を
デプロイして動かすところまでを解説します。

結構長くなったので、目次と簡単な内容を付与しておきます。

| 節 | 項 | タイトル | 内容 |
| :-: | :-: | :—————————- | :———————————————————- |
| 2 | – | 前準備 | – |
| | 1 | – ローカル環境 | AzureFunctions をデプロイ

元記事を表示

【Python3】機械学習を使ってデータ分析をやってみよう!(回帰)

# 対象
– AIに興味がある人
– 興味があるけど何からすれば良いか分からない人
– AIで何ができるのか知りたい人

# 前提
– Googleアカウントを持っている
– Google Driveの基本的な使い方を知っている
– Python3の基本的な使い方を知っている
– 機械学習の理論については扱わない

機械学習の概要に関しては以下を参照
> [一から始める機械学習(機械学習概要) – Qiita](https://qiita.com/taki_tflare/items/42a40119d3d8e622edd2)

# ゴール
– テーブルデータの目的の列の値をある程度の精度で予測できる
– データ分析に必要な専門用語が少し分かる
– データをグラフで表示できる

![ランダムフォレスト02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/792137/4b4aa6e8-73f2-eeb0-6695-670f9aefce98.png)

# 前知識
予測するデータの種類によって使うモデル

元記事を表示

Githubトレンドリポジトリ①~面白そうなグラフィック系のリポジトリを発見したので試してみた~

## 経緯
前にgithubのトレンドリポジトリから情報を定期通知するという[記事](https://qiita.com/Hiroaki-K4/items/61b357fa69c90fd9bbfd)を書いたのですが、それを通じて、面白そうなリポジトリを発見したので共有します。今回は[taichi](https://github.com/taichi-dev/taichi)を紹介します。これシリーズ化しようかな(笑)。

## taichiとは
**Taichi (太极) is a programming language designed for high-performance computer graphics.**
リポジトリの最初に上のように書かれているのですが、taichiがプログラミング言語なのかはわかりません。taichiはpythonで書かれたコンピュータグラフィックスのためのライブラリだと、勝手に解釈してます(笑)。違ったら教えてください。

## 試してみた
導入はpipでtaichi入れるだけです。あと、gpu使うのでcudaもいります。

“`bash
pi

元記事を表示

複数のバージョンのCUDAを同一環境で扱う方法

大学の研究で機械学習をやっていて、同一環境で複数のバージョンのCUDAを扱うにはどうすればよいのか困ったことがあったのでそれについて書いていく。

# 前提
Windows10環境においてPyTorchをGPUで動かす。
PyTorchのバージョンによって必要なCUDAのバージョンが異なる。
これに伴って、複数のバージョンのCUDAをインストールした。

# 対象者
PyTorchをGPUで動かしたことがあり、cuDNNやCUDAのインストール方法やパスの通し方は大体知っているが、複数のバージョンの扱い方がわからない方。

# 方法
結論から言うと、ユーザーは何もしなくてよい。
パスさえ通っていれば、PyTorchのどのバージョンを動かすかによって必要なCUDAを自動で認識してくれる。

`where nvcc`とコマンドプロンプトに入力した時に

“`
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin\nvcc.exe
C:\Program Files\NVIDIA GPU Computing Toolkit\

元記事を表示

Pythonでtry/exceptと、ディクショナリの編集、取り出しの応用練習

#はじめに
英語は””を付けるのめんどいから使ってるので文法とか許してください。
python初心者なので色々許してください。
有識者の方へ、もっとなんとかなるとかあったら優しく教えて許してください。
許してください。

#概要
・ディクショナリからキーを検索する。
・指定したキーが見つかった場合は値を出力、見つからなかった場合は「鍵は見つからなかった」と出力する。
・上記処理が終了したときに、続行するか、ディクショナリを編集するか、終了するかを選択する。

#完成例

“`python
name_age = {“tanaka”:33,”satou”:23,”suzuki”:29}
def dict_info (dict_tbl,key):

try:
print(key,”‘s”,dict_tbl[key],” years old.”)

except LookupError:
print(“[Key is not found.]”)

op = 0
while op !=1:
if op == 0:
key

元記事を表示

Python の Flask Web API に JWT による認証を組み込む

## はじめに

Python で作成した Flask Web API に対して、JWT (JSON Web Token) 認証を組み込んでみました。
参考:[Python + Flask + MongoDB を利用した Web API の作成と Azure VM + Nginx への配置(ホロライブの動画配信予定を収集 その3)](https://qiita.com/kerobot/items/bd504b0d787de63c364e)

## JWT (JSON Web Token) とは

JWT は JSON Web Token の略で、要求情報(Claim)を JSON オブジェクトとしてやりとりするトークンの仕様です。
仕様は RFC7519 で定められており、二者間の通信時の認証(Authorization)に利用されます。

今回は、Web API へのリクエストで指定されたユーザー名とパスワードを元に、JWT トークンを生成してレスポンスとして返し、その JWT トークンを用いて、Web API の機能を利用できるようにしてみました。

## 環境

* ローカル環境

元記事を表示

Ubuntu 20.04 で pyenv を使用して Python を導入する

本記事では、Ubuntu 20.04 上に [pyenv](https://github.com/pyenv/pyenv) を使用して Python を導入する手順をまとめます。

# 注意

– そもそも pyenv が必要なのか確認しましょう。pyenv で期待通りに動作する Python を導入するのは簡単ではありません。(私は 1 時間くらいネットをさまよいました。)
– ただ Python が欲しいだけの方は、環境構築で苦労したくなければ OS 標準のパッケージ(Ubuntu なら `sudo apt install python3-pip`)や [Anaconda](https://www.anaconda.com/) などに頼ることをおススメします。
– 個人的に、pyenv は環境構築で困ったときにネットで対応策を探す面倒を受け入れられる人でないと使えないと思っています。正しく導入できれば便利なんですけどね…。
– 下記の手順の一部は、Ubuntu 20.04 に依存しています。Ubuntu 18.04 にすら対応していません。
– 一応、該当箇所には Ub

元記事を表示

OTHERカテゴリの最新記事