- 1. Raspberry Piでcronを使おうとしてスペースで詰まった話
- 2. python : ラーメンタイマーの作成(pyttsx3 , time)
- 3. 速いと噂のPythonのVaexについて詳しく調べてみた。
- 4. Python スクレイピングについてまとめ
- 5. 正規表現で検索件数を取得する。SeleniumBasic VBA Python
- 6. macOSでPython入れようとして「export」がterminalに表示され続けた時の対処法
- 7. Pythonでgif動画を作成
- 8. プログラミング1年未満の初心者がDjangoとPythonで記事を Markdown技法で投稿・共有出来るサービスを作成しHerokuで公開してみた。
- 9. 顔画像データセット仕分けのための学習用データ作成
- 10. (テスト自動化) 画像認識に曖昧さを持たせる
- 11. factory_boyでテストデータを作る
- 12. 【Python】配列生成(初期化)時間まとめ!!!
- 13. macOS Big SurでPythonをはじめてみる
- 14. [エラー]IOPub message rate exceeded. The notebook server will temporarily stop sending output to the client in order to avoid crashing it.
- 15. E資格問題集を解いてみた[第1章5問目]
- 16. 複数のバージョンのCUDAを同一環境で扱う方法
- 17. 画像内のA4プリントを切り出す
- 18. 【Python】Selenium3から4へ上げたらWarningが出た【WebDriver】
- 19. 【Python】 配列内で一番近い値を取る index を返す関数まとめ
- 20. DjangoにおけるCookie管理の仕方
Raspberry Piでcronを使おうとしてスペースで詰まった話
#しようとしていたこと
ラズパイでcronを用いてpythonスクリプトを定期的に自動実行しようとする基本的な動作を行おうとした。具体的には、dht11温湿度センサによる温湿度の定期観測。csvファイルに書き込むプログラムをThonnyで直書きした。
#おち
cronを使うときは、スペースをチェック。特に/usr/・・・の前。
#環境
devices: Raspberry Pi3B+ センサー;dht11
OS: Rasbian NOOBS_ver_3_5_1
言語:Python 3
#問題
ターミナルで下記を実行した。“`
$ cron -e
“`
お好みのeditorでcron fileの最下部に下記のように記載(私はnanoを使用)
また、使用されているpython3がどこにあるかは、which python3とターミナルにきいた。“`
$ */1 * * * */usr/bin/python3 /home/pi/hoge/hoge1.py
“`動かいないので、ステータスを確認
“`
$ sudo /etc/init.d/cron status
“`
python : ラーメンタイマーの作成(pyttsx3 , time)
# pythonでカップラーメンの音声タイマーを作成。
カップラーメンの時間経過をいつも感覚で判断していた。
問題なく食べれているが、せっかくなのでプログラミングの勉強を兼ねて作成。
## 目次
・コード
・結果
## コード
“`python:コード
#必要なモジュールをimport,pyttsx3の呼び出し
#pyttsx3 : 読み上げ
#time : 時間計測
import pyttsx3
import time
engine = pyttsx3.init()#startは準備開始時間(蓋を開けるとか)
#startの20秒後にお湯を入れる設定
#20秒後にお湯を入れる音声アナウンス
start = time.time()
while True:
oyu_in = time.time()
if oyu_in-start >= 20:
print(“お湯を入れてください”)
engine.say(‘お湯を入れてください’)
engine.runAndWait()#お湯を入れた時間
速いと噂のPythonのVaexについて詳しく調べてみた。
結構前にPandasやDaskなどよりも大分高速と話題になっていたPythonのVaexライブラリについて、仕事で利用していきそうな気配がしているので事前にしっかり把握しておくため、色々調べてみました。
# どんなライブラリなのか
– Pandasと同じように行列のデータフレームなどを扱うことのできるPythonライブラリです。
– Pandasと比較して膨大なデータの読み込みや計算などを高速に行えます(数十倍~数百倍といったレベルで)。
– 計算上のメモリ効率がとても良く、無駄の少ない実装になっています。
– Daskのように計算が遅延評価されたりと、通常はメモリに乗りきらないデータでも扱うことができます。
– Daskのように並列処理で計算を行ってくれます。
– Pandasと比較的似たインターフェイスで扱うことができます。# この記事で触れること
主に以下のVaexのトピックに関して本記事で触れます。
– インストール関係
– カラムへのアクセス
– スライス制御
– 各種要約統計量の計算
– データの選択(selectとselection)
– 各種データの読み込み
Python スクレイピングについてまとめ
今回、社内目標でPython学習を目標として設定し、学習した。
スクレイピングの技術が気になったので、まとめることにします。
#スクレイピングとは
スクレイピングとは、webサイトから任意の情報を抽出する技術のことを指します。
スクレイピングすることで、web上の情報を自動で収集します。
しかし、web上で公開されている情報であればなんでもデータベースに格納できるということではありません。
下記のような技術が備わっております。
・データベースに格納するためには、形式を変更させる
・広告などの不要な情報を排除し、必要な情報を取り出す為のサイトの構造解析
・ログインが必要なページにアクセスする技術
正規表現で検索件数を取得する。SeleniumBasic VBA Python
SeleniumBasicでスクレイピングをしているときによくつかう正規表現のまとめ
随時追記予定
##■検索件数を取得する
例:食べログ検索画面で「新宿」と入力、でてきた件数を取得する
[食べログで検索](https://tabelog.com/)
検索結果:1~20 件を表示 / 全 4664 件
この「4664」を取得したい。##Windows10 エクセルでVBA操作
###準備:検索対象の文字列から全角や改行コードなどを削除し正規表現を簡単にする(VBA)
“`:vba
Dim mozi as String
mozi = “検索結果:1~20 件を表示 / 全 4664 件” ‘対象文mozi = WorksheetFunction.Clean(mozi) ‘改行コードなどの削除
mozi = Replace(mozi, ” “, “”) ’半角空白の削除
mozi = Replace(mozi, “ ”, “”) ‘全角空白の削除Debug.Print (mozi) ‘検索結果:1~20件
macOSでPython入れようとして「export」がterminalに表示され続けた時の対処法
### 執筆経緯
– pythonでpandas使おうと思ってた
– pyenvをinstallしようとした(参考:[pyenvを使ってMacにPythonの環境を構築する」](https://qiita.com/1000ch/items/93841f76ea52551b6a97))
– terminalに「$:export」が表示され続けた…“`
$ export
“`
→「え、え、??あれ、なんかまずいことしちゃいました???」– ちょっと焦ったのと、「まさに同じ現象で困ってます!」みたいな記事が(多分)なかったので誰かのお役に立てればと思い執筆
## 前提条件
– 「`user/”ユーザー名”/.zshrc`」にコマンドプロンプトの表示形式を記入。
– [homebrew](https://brew.sh/index_ja)はinstall済みちなみにプロンプトは下記みたいな感じにしてます。
“`
# zshrc内コード
PROMPT='[%F{cyan}%# %{No.%h %D %T %$ %C%F{reset_color}]:’
“`“`
Pythonでgif動画を作成
# 初めに
いろいろあってgif動画の出力をする機会があったので,軽くまとめました.かなり短いです.# 関数
“`python
import imageiodef make_gif(frames, filename, duration=1./60.):
imageio.mimsave(filename, frames, ‘GIF’, **{‘duration’: duration})
“`
引数は (高さ✕幅✕RGB) の画像 (uint8のnp.arrayとかを想定)の配列,出力ファイル名,gif動画のフレームレートです.gif動画の作成の実装はPIL.Imageを使うことが多いですが,自分の環境で何故かうまく行かなかったのでimageioで実装することになりました.# おわり
誰かの役に立てば幸いです.# どんな感じかみたい人用
“`python
import imageio
import numpy as npdef make_gif(frames, filename, duration=1./30.):
imageio.mimsa
プログラミング1年未満の初心者がDjangoとPythonで記事を Markdown技法で投稿・共有出来るサービスを作成しHerokuで公開してみた。
Qiitaのようなプログラミングに関する知識やアイディアを共有するアプリを作成したいと思い、悪戦苦闘しながら公開まで漕ぎ着けたのでその過程を振り返ってみます。
まず初めに、私はコーディングとは無縁の仕事をしている人間です。プログラミングの勉強を始めたのは、今年の1月。新年を迎えるに当たり、何か新しい事にチャレンジをしたいと思い、以前から興味のあった「プログラミング」に挑戦する事を決めました。
1〜3月
ProgateでPythonとHtml,cssをサラッと勉強。その後、ネット上に公開されているDjangoのチュートリアルを3〜4種類徹底的にやり込みました。
ちなみに、なぜPythonを選んだかというと、何となくであり、深い理由はありません。ただ、結果的には正解だったと言えます。4〜8月
やることは一緒でぱっと見難易度の高そうなチュートリアルを見つけ出し、ひたすらこなす日々。正直、心が折れそうになりましたが、何とか挫けずに続ける事が出来ました。9〜11月
今回、紹介するサービスに着手。もう行き当たりばったり。トライ&エラーを繰り返し、Google先生を頼りまくり、ある程度の
顔画像データセット仕分けのための学習用データ作成
#概要
UTKFaceデータセットを特徴ごとに仕分けするモデルの学習用データを作成する。
色々とご指摘頂けますと幸いです。###UTKFace
[UTKFaceページ](https://susanqq.github.io/UTKFace/)
・ダウンロードすると3つの圧縮フォルダがあり
①900MB
②500MB
③70MB
それぞれに画像が保存されている。3つ合わせると2万枚を越える。
・画像のファイル名が 「年齢-性別-民族-○○○.jpg」とラベル付けされている###仕分け
データを確認すると加工処理されたデータや、複数人が写っているデータなどがある
上記②フォルダのデータを使用し
・普通
・グレースケール
・複数人が写っている
・加工処理されている
を判別するための学習用データを作成する。今回は下記リンクにかなり助けられました。
[顔画像から年齢を予測](https://qiita.com/ha9kberry/items/314afb56ee7484c53e6f)###
環境
Google Colaboratory(GPU)“`csharp
imp
(テスト自動化) 画像認識に曖昧さを持たせる
#背景
社内のシステム開発者向けにテスト自動化システムを構築・運用している。(SikuliX + Testablish)
その中で日常的に出てくる技術課題ややりたいことをメモ書き。Sikuliが楽しい!
#課題
SikuliはOSSのRPAツールである。
となると、RPAツールにありがちな環境差異での画像のちょっとしたズレによる認識失敗がとても気になる。
実際、Win10&Edgeで画面解像度やツール設定を同一にしても、モニタの接続有無や細かいバージョン差ですぐ失敗になってしまう事例が多い。テスト自動化の大敵は手動テストと比較した場合の必要工数である。人は多少の差異があっても曖昧さを自分で解釈して作業を進めることが出来る。(それが品質を悪くすることもある) Sikuliにも多少の寛容さを求めたいところである。#対応
Sikuliの画像認識(OpenCV)には、曖昧さを設定できるオプションがある。
ならば始めは精確さを求めて探索し、徐々に引き下げて曖昧さを増やしていくようにしてはどうか。
また、精確さはデフォルト0.7になっているらしいが、それも厳密にいえばどうかと思う。(同一
factory_boyでテストデータを作る
#factory_boyって何?
今回はDjangoでテストデータを作成したい!といった時のために
便利なfactory_boyを使ってテストデータを作る方法をまとめました。と言うことで、factory_boyはテストデータを簡単に作るためのライブラリです。
RailsのFactory Girlをモデルが元になっているらしい。[factory_boy Reference](https://factoryboy.readthedocs.io/en/stable/index.html)
#初期設定
“`terminal:
pip install factory_boy
“`##フォルダ構成
factorysフォルダーには、テスト使用するでclientオブジェクトを作成するコードを書きます。
test__client.pyファイルには、clientモデルのテストコードを書きます。“`
common/
├ tests/
│ └ factories/
│ ├_init__.py
│ └client.py
│ └test_models
【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
macOS Big SurでPythonをはじめてみる
+ はじめる人は、Unix系OSの基本的な知識はある
+ Pythonははじめてで、知識ゼロ
+ 環境はAppleのiMac(mid 2020、x86_64の最後のiMac??)、macOS Big Surにアップデート済み—
#現状確認
iMacにはおそらくPythonはプリインストールされていると思うので、ターミナルを起動して現状確認してみる。
“`
% which python
/usr/bin/python
“`Pythonのコマンドがあった。
どう使うのかな?“`
% man pythonPYTHON(1) PYTHON(1)
NAME
python – an interpreted, interactive, object-oriente
[エラー]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
E資格問題集を解いてみた[第1章5問目]
初投稿です。
JDLA(日本ディープラーニング協会)が主催するE資格の勉強をしています。
対策には『徹底攻略ディープラーニングE資格エンジニア問題集』を使っています。
しかし問題を解いていると、誤植などが散見されます。
E資格の対策本としては唯一の書籍なので、これから勉強する人のためにも、自分が気付いた誤りを1記事当たり1問で書いていこうと思います。
間違いがあればご指摘ください。まずはテキストの問題文と解答を見ていきます。
次に自分が解いてみた結果と投稿主の解答を掲載します。#第1章 5問目
##テキストの問題文
次の数式の(ア)~(エ)に当てはまる選択肢をそれぞれ1つずつ選べ。ただし、同じ選択肢が2ヵ所以上に当てはまることもある。行列
“`math
A=
\begin{pmatrix}
1 & 0 & 0\\
0 & 1 & 2
\end{pmatrix}
“`を特異値分解し、$A=U \Sigma V^T$の形で表すとき、以下のようになる。
“`math
\Sigma =
\begin{pmatrix}
(ア) & 0 & 0\\
0 & (イ) &
複数のバージョンの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\
画像内のA4プリントを切り出す
# 画像内のA4プリントを切り出す
写真に存在するプリントを真上視点から切り抜いた画像に変換する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/319b1a3a-22f2-694c-d39f-cd19d22a606e.png)
上の写真を下の写真に変換できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573723/d3b500a6-75ce-b258-10c6-db609554ef73.png)# コードに関する注意
– 縦長のA4ファイルに変換するので横長の場合はxとyを書き換えること。
– xが短辺の長さになっているので適度に書き換えること。# コード
“`python:cutting_a4.py
#カラー画像を受け取って紙を切り取って返す
def cutting_paper(img):
x = 2000 #切り取り後のx座標
y
【Python】Selenium3から4へ上げたらWarningが出た【WebDriver】
# はじめに
[以前投稿したSeleniumの記事](https://qiita.com/yagaodekawasu/items/cbdb00eb085d056e92f0)を書くための調査で私用PCのSeleniumを3から4に上げたんですが、それに伴ってcronで定期実行していた既存のSelenium3のログに大量のWarningが出るようになりました。Warningなのでコード自体は正常終了するのですが、ログが無駄に長くなるのは嫌なのでSelenium4のソースコードを分析して自分のコードを修正し、全てのWarningを消すことに成功したのでここに備忘録を残しておきます。
# DeprecationWarning: executable_path has been deprecated, please pass in a Service object
Selenium3では、ブラウザのドライバにPATHを通さない場合は以下のようにドライバを起動していました。~~~Python3
from selenium import webdriverdriver = webdri
【Python】 配列内で一番近い値を取る index を返す関数まとめ
意外と詰まったし良いまとめがないので書く.
#1 一番近い値の重複を考えない場合
##1.1 最もシンプルなバージョン
探したい値が一つで,返したい index も一つの場合.これが最も簡単.探索されるデータは1次元配列を想定.
“`python
import numpy as npdef idx_of_the_nearest(data, value):
idx = np.argmin(np.abs(np.array(data) – value))
return idx
“`##1.2 具体例
“`python
data = [1, 1 ,1 ,0.5 ,2 ,3 ,-1]
value = 0.8
n = idx_of_the_nearest(data, value)
n
#0
“`##1.3 探したい値が複数ある場合
探したい値をリストで指定できるようにしたい.そのための関数が以下.
“`python
import numpy as npdef idx_of_the_nearest(data, value):
pri
DjangoにおけるCookie管理の仕方
こんな感じらしいです。
後で読む―公式ドキュメント
https://docs.djangoproject.com/ja/2.1/topics/http/sessions/