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

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

OpenCVの動画コーデック

### はじめに
なめらかな動画をとるためには、フレームレートを上げる必要があります。
動画圧縮のコーデックによっては、フレームレートが上がらないことがあります。
そこで、OpenCVでのコーデック情報の取得と、コーデックの変更方法についてメモとして記載します。

参考:
[OpenCVのカメラ読み込みを高速化し、遅延時間も短くする](https://qiita.com/iwatake2222/items/b8c442a9ec0406883950
)
[OpenCVからWebカメラの「解像度」「FPS」及び、「フォーマット(コーディック)」を設定する方法](https://dev.classmethod.jp/articles/opencv-webcam-setting/)

### 動作環境
Win10 Pro 64 bit
Python 3.7
Anaconda
OpenCV 4.2 (conda-forgeでインストール)

### 動画コーデック

動画を保存する際に、データ量が非常に大きいためにデータの圧縮を行います。この圧縮アルゴリズムがコーデックです。圧縮アルゴリ

元記事を表示

forで配列・辞書要素の取り出し

for文で配列・辞書要素を取り出すときのメモとして記載します。
参考:
[Pythonのfor文によるループ処理(range, enumerate, zipなど)](https://note.nkmk.me/python-for-usage/)

“`python
x=[7,4,1]
y=[8,5,2]
d={‘a’:9,’b’:6,’c’:3}

# 基本
for i in x:
print(i)
#>>> 7
#>>> 4
#>>> 1
“`
####Dict(辞書型Key-Value)
“`python
# Dict(辞書型)
for k,v in d.items():
print(k,v)
#>>> a 9
#>>> b 6
#>>> c 3

#受ける変数を1つにするとTupleになる
for k in d.items():
print(k)
#>>> (‘a’, 9)
#>>> (‘b’, 6)
#>>> (‘c’, 3)

#キーだけ取り出す
for k in d.keys():
print(k)
#>>> a
#>>> b

元記事を表示

ゼロから始めるLeetCode Day61「7. Reverse Integer」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

[PyTorch]ToTensor()はどのように動いているんだろう

## はじめに
PyTorchで画像を扱っている際,tochvisionのTransformsにあるToTensor関数(1)って何をしているのかが気になったので調べてまとめておこうと思います.

## 要約
ToTensor関数の動きを理解しnumpyと相互変換できるようになる

## sample code
[ここ](https://discuss.pytorch.org/t/understanding-transform-normalize/21730/9?u=kazuki_hamaguchi)(2)のコードを参考にしながら,numpyで画像を読み込んだと仮定して“`numpy -> tensor -> numpy“`に戻してみます.ダミー画像の大きさは$(W,H,C)=(4,5,1)$とします.また,動作確認のみなのため,“`ToTensor()“`と同じ機能を持つ“`import torchvision.transforms.functional.to_tensor()“`を使用しています.

“`python
import torchvision.transf

元記事を表示

PythonのメソッドでNoneType is not callable.

バカな私はこんなクラスを書いて

“`Python
class SessionManager:
def __init__(self):
self.continuous = 0
self.stay_min = None
self.datetime = None

def stay_min(self, df: Series) -> float:
“””
Args:
df (Series): row including (user_id,
datetime,continuos,session_id)

Returns:

“””
is_continuous: bool =\
df.continuous – self.continuous == -1
if is_continuous:
dst = (self.dat

元記事を表示

初めてWindows10にOpenCVを導入するときのアレコレと自己紹介のようなもの

#はじめまして
長いことQiitaは読者としてお世話になってきましたが,一本目の記事なのでいろいろと手探りです.
コードについてでも記事の作りこみ方でも,なんでも気軽にコメントをください.アレコレの部分はあくまでも私見なのでご容赦くださいませ.
#自己紹介的な
こんにちは,ぶらんちと申します.
大阪のとあるメーカー勤務でソフト部門の新人です.大学ではロボット工学について学んでいたはずなのですが,気づいたら情報理工学的なところに興味を持つようになり,ソフト開発者の道を歩み始めました.
今の興味が自動化ということもあり,Excel for VBAやらPythonやらLuaやらバッチファイルやら手広く扱うようになってきました.
少し余裕ができたらSeleniumにも手を出そうと思っています.
#記事作成を通してやりたいこと
例えばWebカメラでスナップショットを撮影,という記事は世の中にたくさんありますが,その中の多くが[特定のキーボード操作をしたら撮影]とか[10秒待ったら撮影]とかそういうのが多かったのではないでしょうか.
私は自動化が大好きなので,「キーボードで何か押さないといけない」

元記事を表示

Pythonで2分探索木の動作を可視化

#探索木の動作
平衡2分探索木の考えですが、以下の関係を壊さないように、気に対してノードの`追加`と`削除`進めていきます。
`左の子ノードの値 ≦ ノードの値 ≦ 右の子ノードの値`
加えて、木の平衡状態、つまり
**各ノードの左右の部分木の高さの差が1以下にする**
という状態を保つために
ノードの`追加`や`削除`が行われた後に`回転`が行われます。

このロジックの理解を深めるため、どのように木が変化していくかを可視化してみます。
こんな感じです。
スクリーンショット 2020-06-18 23.44.00.jpg
スクリーンショット 2020-06-18 23.49.34.jpgゼロから始めるLeetCode Day60「1481. Least Number of Unique Integers after K Removals」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

JavaScript版strftime(組み込みオブジェクトDateの拡張)

#strftimeって?
PythonやCなどにある、日付オブジェクトのフォーマット関数。あらかじめ決められたキーワードを入力することで、該当箇所が日付のパラメータに置換される。

“`python:Python
import datetime

d = datetime.datetime.now()
d.strftime(‘%Y-%m-%d’)
# “2020-06-18”
d.strftime(‘%c’)
# “Thu Jun 18 13:25:31 2020″
“`
#使い方

“`javascript:JavaScript
var d = new Date();
d.strftime(‘%Y-%m-%d’)
//”2020-06-18″
d.strftime(‘%c’)
//”Thu Jun 18 13:25:31 2020”
“`
###対応指定子
|指定子|意味|使用例|
|—–|—–|—–|
|`%a`|ロケールの曜日名を短縮形で表示します。|Sun, Mon, …, Sat|
|`%A`|ロケールの曜日名を表示します。|Sunday, Mo

元記事を表示

小説「吾輩は猫である」でベンフォードの法則が成り立っているかを確かめてみる

#1.はじめに
プログラミングを学習し始め自然言語処理に興味を持ったので,[自然言語処理100本ノック2020](https://nlp100.github.io/ja/)を勉強し始めた.[第4章:形態素解析](https://nlp100.github.io/ja/ch04.html)を参考にしながら夏目漱石の小説『吾輩は猫である』の文章中の数字を抽出してベンフォードの法則が成り立っているか調べることにした.
#2.目次
1.はじめに
2.目次
3.ベンフォードの法則
4.コード
5.まとめ
参考
#3.ベンフォードの法則
ベンフォードの法則とは住所,株価,電話料金など我々の身の回りにあるものの数字の最初の一桁目の分布についてなり立つ法則である.それらの数字は1〜9の数字のいずれかであり,その分布は一桁目の数字をn,その分布をpとすると
$$ p = \log_{10}\frac{n+1}{n} $$
となる.これを表にすると以下のようになる.

|n|1|2|3|4|5|6|7|8|9|
|:——–|:—|:—|:—|:—|:—|:—|:—|:

元記事を表示

Windows Master File Table($MFT) をElasticsearchにimportする

# Overview

[Windows EventLogをElasticSearchにimportする](https://qiita.com/sumeshi/items/491891d83c3aca224880)
[Windows EventLogをElasticSearchにimportする(のを100倍早くする)](https://qiita.com/sumeshi/items/cb2fbafe59c2c83e3085)
[Windows EventLogをjson形式に変換する](https://qiita.com/sumeshi/items/f3e87f0412f9b05f85a3)

このへんの記事のMFT版です :sushi:

DFIRをする際に, たまにMFT(Windowsのファイル管理テーブル)を調査する必要があるので自分用にライブラリ化しました.
内部でRust製ライブラリを使用しているのでなかなかに高速です.

僕のようにフォレンジック以外の用途として, ファイルを高速に検索するサービスを作ってる人もいるようです(凄い!).
Pythonで検索サービスなんか

元記事を表示

Anacondaコマンドリスト

#anacondaのコマンド備忘録

###仮想環境の作成
“`conda create -n {ENV_NAME} python={VERSION}“`

###削除
“`conda remove -n {ENV_NAME} –all“`

###仮想環境のリスト表示
“`conda info -e“`

###複製
“`conda create -n {NEW_ENV_NAME} –clone {ORIGINAL_ENV_NAME}“`

###環境の適用
“`conda activate {ENV_NAME}“`

###環境の無効化
“`conda deactivate“`

###インストール
“`conda install {PACKAGE_NAME}“`

###アンインストール
“`conda uninstall {PACKAGE_NAME}“`

元記事を表示

JAXの自動微分で二階微分を求める

# はじめに
複雑な関数の微分を求めたい時に、自動微分が便利ですよね。そんな時、私は今まで[Pytorchの自動微分](https://helve-python.hatenablog.jp/entry/pytorch-automatic-differentiation)を利用していました。しかし、自動微分だけ使いたいのにpytorchのパッケージがかなり重いので、もっと軽量なパッケージはないかなと探していたところ、[JAX](https://github.com/google/jax)にたどりつきました。

# JAXとは?
[公式](https://github.com/google/jax)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/570899/137ddbb6-c4db-080f-a317-993e409b6224.png)
[Autograd](https://github.com/HIPS/autograd)(今はメンテナンスされていない)の更新バージョンです。GPUを使

元記事を表示

普通のグラフを散布図っぽくアレンジ|Pandas

#散布図の描画を利用してグラフ作成
散布図と言いますとだいたいこんなイメージですよね。
スクリーンショット 2020-06-17 23.32.49.jpg
こういったデータ分析に強いのが**Pandas**ライブラリです。

これを使ってフツーのグラフを散布図風に描画してみました。

まずはソースコードです。

“`Python:scatterSample.py
# Pandas ライブラリ
# 2020.06.18.ProOJI
# Matplotlib.pyplot、 そしてNumpyも使用
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 等差数列 linspace(初項、最終項、要素数)
# 例:np.l

元記事を表示

ゼロから始めるLeetCode Day59 「1221. Split a String in Balanced Strings」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

[初心者用] Pythonでの標準入力まとめ (解説付き)

#はじめに

__*この記事は、AtCoder や paiza などで、標準入力がわからず困っている方用です。__

たくさん種類があり、難しそうに見えるかもしれませんが、実際は入力の種類に合わせたものを選択しているだけです。

初めのうちは、覚える必要は全くないので、一回一回確認しながら、少しづつ慣れていきましょう。

注)__この記事は初心者の方のための記事となっております。__初心者の方の理解を優先するため、一部不十分な言い回し等が含まれていますが、ご理解いただくようよろしくお願いいたします。

# どのコードを使えばいいか

Atcoder や paiza の問題において、どのコードで標準入力を受け取るかは、主に次の二つを考慮します。

– 入力がどの種類のものか (一行 or 複数行、文字列 or 数字)
– その入力をどのように受け取りたいか (変数に入れる、リストにする、etc)

このうち、二つ目は繰り返し問題を解くうちに、徐々にわかってくるので、この記事では一つ目に焦点を当てて解説していきます。

# 一行 入力が一つ

入力

“`
abc # 文字列
12

元記事を表示

倒立振子ロボット製作記~ハードウェア編~

倒立振子ロボットを製作しました。
今回はハードウェア編です。

##1.材料
[ラズパイタンク](https://qiita.com/shi78ge/items/e4d9dd90dc8274431e45)の材料に追加で購入したものです。

■機構部品
 ↓タミヤ楽しい工作シリーズ
 ・スポーツタイヤセット
 ・ユニバーサルプレートセット
 ・ユニバーサルアームセット
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/569342/8a9667de-c2e9-1ff4-e675-79e22552944b.png)

 ↓その他
 ・六角オネジ・メネジ MB26-11
 ・M2.6のビス、ナット
 ※M3でも問題なし?M3のほうが入手性がよいです。

■電装部品
 ・BMX055使用9軸センサーモジュール
 ・ユニバーサル基板Cタイプ
 ・ピンヘッダ
 ・ピンソケット

##2.ベースの作製
![image.png](https://qiita-image-store.s3.ap-northe

元記事を表示

人工知能学会全国大会2020を盛り上げた組織はどこか?

# はじめに
近年盛り上がりを見せている人工知能領域は学術機関だけでなく企業や自治体まで注目しています。
この領域の学術的祭典とも言えるのが年1回開催される人工知能学会全国大会です。

今回は何番煎じかわからない出涸らしのような記事ですが
オンラインで開催された人工知能学会全国大会2020にどのような組織が発表していたか確認することで、
近年の学術的祭典を盛り上げている組織を Python を利用して分析してみます。

触発されて書いてみたものなのでお手柔らかにお願いします。

# データ
今回利用するのは下記の記事で利用している github 上に公開されている集計データです。
[人工知能学会2020&2019年の集計(データセットあり)](https://qiita.com/keeeeei0315/items/5f4879d8935b97868e8c)

この記事の執筆時点にてタグによるバージョン管理がされておりましたので [v0.2.0](https://github.com/tobara289/jsai-datasets/tree/v0.2.0) を利用します。

ディレクトリ

元記事を表示

【Python3】tkinterでonChange的なイベントを捕まえたい

# 目的
Tcl/Tkには他のGUIインターフェースを持つ言語によくある『テキストボックスの中身が変更されたら発生するイベント』が元から実装されていない。よって、なるべく簡便に実装できる方法を考え、実際に作ってみる。

## ことの経緯
[Teratailのこの記事](https://teratail.com/questions/268691)
バーコードリーダからキーボードインタフェースで入力されるデータを監視し、Entryにバーコードデータが入ったら自動で次のEntryにフォーカスを持っていきたいという話。
バーコードリーダーは機器側の設定でデータの末尾に改行を付与することができるので、テキストの変更を検知して末尾の改行を読み取ればよい。

# 実装

## 最初の実装
StackOverflowで見つけた記事 [Python tkinter text modified callback](https://stackoverflow.com/questions/40617515/python-tkinter-text-modified-callback)を参考にEntry中の`cr

元記事を表示

学習の吐き出し1(Python編1)

学習の吐き出しです。
今回主に学んだのは、文字列についてでした。

### エスケープ
\のこと。文字列の改行***\n***でよく使われる。
こんな感じ。

“`py
>>> palindrome = ‘A man, \nA plan,\nA canal:\nPanama’
>>> print(palindrome)
A man,
A plan,
A canal:
Panama
“`
また、***\t***でテキストの位置調整ができる。

“`py
>>> print(‘\tabc’)
abc
>>> print(‘a\tbc’)
a bc
>>> print(‘ab\tc’)
ab c
>>> print(‘abc\t’)
abc
“`

そしてクォートを文字として使いたい場合も、\が必要。

“`py
>>> testimonyb = “\”I did nothing!\” he said. \”Not that either! Or the other thing.\””
>>> print(testimonyb)
“I did nothing!” he sai

元記事を表示

OTHERカテゴリの最新記事