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

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

FastDDSが送出するIGMPv2マルチキャストパケットを追いかける

## ROS2ユーザー向けの要約
– FastDDSでデフォルトの`239.255.0.1`に対して、一般的に使われるであろう、239.0.0.0/8のプライベートスコープでMacアドレスが重複するマルチキャストグループは、`239.127.0.1`となります。ROS2以外のアプリケーション(動画配信システム、TV会議システムなど)の動きにも注意して下さい。
– ROS2のQoS周りがIPネットワーク的には変化の余地がありそう。SHMとかの単一ホスト向けの改良の方が優先度高そうですが。

## はじめに
先日、[ROSアドベントカレンダー](https://qiita.com/advent-calendar/2021/ros)として投稿した、[AWS\-VPC内でROS2\(FastDDS\-Multicast\-UDP\)を使ったPub/Subを実行する【相性良い/悪い\!?】](https://qiita.com/fudekun/items/d23ea7da97d5f9160824)の補足として、[FastDDS](https://fast-dds.docs.eprosima.co

元記事を表示

Python 1本うどんコード

# はじめに
Pythonには[リスト内包表記](https://docs.python.org/ja/3.8/tutorial/datastructures.html#list-comprehensions)という便利な記法があります。リスト内包表記の記法は以下のようになっています。

“`python:list_comprehensions.py
[ (式) for (変数名) in (イテラブルオブジェクト) ]
“`

イテラブルオブジェクトとは`list`や`dict`のようなイテレーションが可能なオブジェクトのことです。
変数名にはイテラブルオブジェクトの要素が1つずつ取り出され束縛されます。
式には定数や変数、`x < y`, `i * 2`といった演算の戻り値が該当します。 とても簡潔で便利なリスト内包表記ですが、実は[チューリング完全](http://metanest.jp/tm/tm.html)であることが知られています。つまり、リスト内包表記では計算機によって原理上可能な処理をすべて行うことができるということです! このリスト内包表記がうどんの麺のように見え

元記事を表示

デコレータを使用してみる

### 目的
– デコレータの使用に慣れること

### 内容
関数実行前にメンバーかどうかを判断し、メッセージを切り替える。

“`login_decorator.py
member_list = [“高橋”,”田中”,”井上”]

def check_decorator(func):
def check_member(name):
print(f”==={name}さんの会員チェック開始===”)
if name in member_list:
func(name)
else:
print(f”{name}さん、会員登録してください”)
print(f”==={name}さんの会員チェック終了===”)
return check_member

@check_decorator
def greeting(name):
print(f”{name}さん、ようこそ”)

# 関数実行
greeting(“田中”)
greeting(“佐々木

元記事を表示

Pythonで順列・組合せを列挙する(再帰関数)

## はじめに

`Python 組合せ列挙`などと検索すると、標準ライブラリ[`itertools`](https://docs.python.org/ja/3/library/itertools.html)の`permutations`や`combinations`を使って実装している記事が多くでてきます。

**しかしそんなものは甘えに過ぎません、$Pythonista$たるもの標準ライブラリくらい一度は自力で実装しておきたいものです。**

※ライブラリの利用を否定しているわけではありません。
※むしろ、自力で実装するよりはライブラリの方が高速でしょうから、実際に運用するときは大人しく`itertools`使いましょう。

### 対象読者

「じゃあ`permutations / combinations`の中身はどうなってるの?」と思ってるそこのあなた

## いざ実装

### 再帰関数って??

すごくわかりやすい記事があるのでそちらを参照してください。

[再帰関数を学ぶと、どんな世界が広がるか](https://qiita.com/drken/items/23a4f

元記事を表示

AtCoderの復習を手助けするWebサイトを作った(AtCoder-Ebbing)

この記事は[競プロ Advent Calendar 2021](https://adventar.org/calendars/6713) 8日目の記事です。

# 概要
AtCoderの復習を手助けする[AtCoder-Ebbing](https://atcoder-ebbing.web.app)というサイトを作成しました。
レートや解いた回数、前に解いたときからの期間等を考慮して解くべき問題を一問ずつ出題してくれます。
名前の由来は忘却曲線のエビングハウス氏です。

– https://atcoder-ebbing.web.app
– https://atcoder-ebbing.firebaseapp.com

(キャッシュのせいか片方見れないことがあります。見れない時はもう片方にアクセスすると良いかもしれません)

## 背景

皆さんAtCoderのレート上がってますか?
僕のレートはずいぶん長いことX軸に平行です?。

一度解いた問題をちゃんと身につけるために復習が大切だというのは分かっていますが、復習をするため問題を管理するのはやや面倒です。

特に手間をかけず単語カード的

元記事を表示

Scipyによるシンボリック変数での微分積分

#sympyの導入

“`php
import sympy as sym
“`
sympyをこれで導入します。
うまくいかない場合は、

“`php
!pip install sympy
import sympy as sym
“`

としてみましょう。
#シンボリック変数の導入
Scipyのモジュールでは、シンボリック変数というものを用いて計算を行います。なので、まず、シンボリック変数を導入します。
例えば、x、y、zの三変数を用いたいときは、

“`php
x , y , z = sym.symbols(‘x y z’)
“`

という風にコードを書きます。
これをやらないとエラーが起こるので注意しましょう。

特殊な数字を扱うこともできます。

“`php
ensyuritu = sym.S.Pi
sizentaisu = sym.S.Exp1
kyosu = sym.S.ImaginaryUnit
mugen = sym.oo
“`

#微分
sympyを用いれば、数式の微分をすることができます。
今回は、x2の微分をしてみましょ

元記事を表示

Python3でCGIチャレンジ5 簡易ログイン機能

#作業フォルダ
ps5

#作業
html1つとpy1つ作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401158/3951b723-3cbb-2aec-bf4b-d9c222e09eba.png)

##index.htmlの作成

“`html:index.html


ID:
PASS:



“`

##cgi-binフォルダの作成

##authent

元記事を表示

データ分析に使える便利なpythonライブラリ4選

## はじめに
 numpy, Pandas, matplotlib, seabornなどの必須ライブラリではなく、
今回は知っていると得する、**便利なデータ分析ツール**を紹介していきたいと思います。

 最初の段階では書籍などから地道に勉強している人も多いので、私含め知らないツールが多いなと思い、本記事を書くに至りました。

## 概要
 最初は可視化するにもmatplotlibやseabornに慣れていないこともあり、
重要な特徴量を見つける、相関を見つけるのもままならない(or時間がかかる)かと思います。

ベテランの方でもまずは全体の特徴量同士の相関を、、
ベースモデルとしてとりあえずGBDTを使用して、、などルーティーンとなっている作業は多々あると思います。

もちろんモデルの選択や、なぜ高スコアとなるか考察をすること、
重要な情報に絞って自分で可視化できる力は大変必要だと思います。
しかし、EDA([探索的データ分析](https://uribo.github.io/practical-ds/01/eda.html))を行うにあたり、(駆け出しの)データ分析者が少しでも

元記事を表示

[Python]WordCloudで岸田首相の所信表明演説のキーワードを可視化する

「[Applibot Advent Calendar 2021](https://qiita.com/advent-calendar/2021/applibot)」8日目の記事です。

# ワードクラウドが面白そう
日経の記事にて、ワードクラウドを用いて所信表明を分析している記事があった。
![日経におけるワードクラウドを用いたキーワード分析](https://article-image-ix.nikkei.com/https%3A%2F%2Fimgix-proxy.n8s.jp%2FDSXZQO1344191006122021000000-1.jpg?ixlib=js-2.3.2&w=638&h=359&auto=format%2Ccompress&ch=Width%2CDPR&q=45&fit=crop&bg=FFFFFF&s=97b07012207cbc87c4529930c4d2a289)
引用元:[首相所信表明、「分配」半減 キーワード分析](https://www.nikkei.com/article/DGXZQOUA060VB0W1A201C2000000/)

記事によ

元記事を表示

ガンプラの出荷予定情報のチェックをPythonで自動化してみた。

はじめに

とりあえずツールを使ってみたい方は、https://github.com/seahawk4747/monitorGunplaReleaseInfo.py/blob/main/README.md をご覧ください。

ガンプラの再販情報がちょっと見づらいので、Pythonを使ったWebスクレイピングの練習として、情報取得の自動化をやってみた。

やりたいこと

* バンダイのWebサイトから出荷予定情報のPDFファイルをダウンロードする。
* ダウンロードしたPDFファイルからデータを抽出し、構造化データへ変換する。
* 必要に応じてデータをフィルタリングできるようにする。(例:RGのみ表示、など。)

先行事例

”ガンプラ出荷日を自動で Google カレンダーに出力してみた。” by isurut

ガンプラ出荷日を自動で Google カレンダーに出力してみた。

isurutさんは、PDFの処理にtabulaを使っていた。私もいろいろ調べた結果、表や日本語処理を考慮するとtabula一択になった。
また、構造化した

元記事を表示

numpyの学び(配列の中に配列を)

## はじめに
**「numpyでそんなことができたのか。。。」**
ある日バイト中に社員の方からコードを見てもらってるときに教えてもらったことが、僕の中であまりにも感動してしまったので、思わず記事にしてしまいました。
研究でしかpythonを使わず、`numpy`もそんなに使ってないとはいえ、少しは使えるようになってるかなと思ってた矢先の出来事でした。
python playerの人は知ってる方も多いかもしれませんが、興味本位で見てくだされば幸いです。

## np.zeros
`np.zeros`とか`np.ones`とか`np.empty`で初期化した配列を作れるのは、周知の事実ですがサイトとかみると
1次元配列・2次元配列でしか紹介されてないですよね。
こんな感じです。↓

“`.py
import numpy as np
a = np.ones(5) #要素が5個の一次元配列
b = np.ones((4, 5)) #4×5の2次元配列
“`

それでは、配列の中に配列を入れる場合にはどのように初期化するのでしょうか?
例えば、2次元配列の要素に2次元の要素を入れたいとき

元記事を表示

yamlファイルを作ってpythonで使用してみる

## 目的

– yamlファイルの利用になれる

#### 注意点
– yaml実務未経験者が書いているので、不備等あればご指摘いただければ幸いです。

## yamlファイル

“`test.yaml
shop_type: fruits stand

## リスト
fruits_list:
– “りんご”
– “バナナ”
– “みかん”

## 辞書型
fruits__price_dict:
“りんご” : 100
“バナナ” : 150
“みかん” : 399

## 参照される側
shop_name: &test_ref “田中果物株式会社”
## 参照する側
shop_company_name: *test_ref

## 挿入(今回)

## あまり下記のような使い方はしないかもしれないが、思いついたので記載
# 更新前
staff_dict: &staff_dict
staff1 : “吉田”
staff2 : “井上”
staff3 : “田中”

# 更新1回目
staff_dict_updated: &staff_dict_u

元記事を表示

なぜ乱数のシード値は42なのか?

# 背景

乱数を固定するときシード値を設定するが、そのシード値にしばしば**42**を用いる。
しかし、なぜ42を用いるのか、が気になったので、調べてみた。

#### pythonで乱数を固定する例
“`python:random.py
import numpy as np
np.random.seed(42)
# 一回目
print(np.random.randint(0, 1000, 10))
# -> [102 435 860 270 106 71 700 20 614 121]

# 二回目
np.random.seed(42)
print(np.random.randint(0, 1000, 10))
# -> [102 435 860 270 106 71 700 20 614 121]
“`

ちなみに、42以外にも、1234や2021(西暦)も定番である。

#乱数とは

乱数とは、「ランダムに出力された数字」のことである。

例えば、ポケモンのゲームでは、同じ相手に同じ技を繰り出しても、毎回同じダメージになるとは限らない。

これは乱数を用いているから

元記事を表示

NumPyの*(乗算演算子)は、配列か行列かで挙動が変わる。

numpyでは、`numpy.array`(配列)と`numpy.matrix`(行列)を扱うことができ、両者間の演算であっても基本的にはスムーズに行うことができます。

しかし`*`(乗算演算子)では注意が必要です。

通常、配列同士の演算ではこの記号はアダマール積を表します。行列積を求めたい場合には`np.dot()`または`@`演算子を使用します。

しかし、`*`演算子で求まるのは常にアダマール積だと言う理解は危険です。行列同士の演算で`*`を用いた場合は、アダマール積ではなく行列積が求まります。当然`@`で求まるのも行列積です。

また、一方が行列でもう一方が配列だった場合、自動的にどちらも行列にキャストされるため、求まるのは行列積であり、返り値の方も`numpy.matrix`になります。

複雑なので、表にまとめると以下のようになります。

| | `*`演算子 | `@`演算子 |
| :——————

元記事を表示

pandas Tips【備忘録】

pandasが大好きなので、使っていく上で必要になるテクニックを備忘録的に書いていきます。

## 行を取り出す (loc, iloc)

pandasで行を取り出したい場合、スライス表記 (ex. `df[‘R1′:’R1’]`)を使うという手もありますが、1行のみを取り出したい場合は冗長ですし、型が`Series`ではなく`DataFrame`になってしまいます。

そこで`loc`, または`iloc`を使います。`df.loc[‘R1’]`とすることで、`df`から`’R1’`行を`Series`型で取り出すことができます。

“`python
import pandas as pd
from pandas import Series, DataFrame

df = DataFrame(
[
[1, 2, 3],
[4, 5, 6]
],
columns = [‘A’, ‘B’, ‘C’],
index = [‘R1’, ‘R2’]
)

print(df)
# A B C
# R1 1 2 3
#

元記事を表示

利用しているAWS Configルールを一覧で取得したい

#1. はじめに
エンジニアとしてAWSを利用していると、お客様(非エンジニア)とのギャップに気づくことが多々あります。
エンジニアとしては「コンソールから見れば済むのに」という内容も、お客様にとってはパラメータシートなど資料に起こして管理したいと思うこともあるようです。

今回は、AWS Configを一覧で取得しようと思います。
※プログラム歴が浅く、コード上の改善案があればコメント頂けると幸いです:sunny:

#2. 本記事の内容
いくつかの参考記事をベースにPythonのBotoCoreを使い
サービス上限緩和の状況をJSON形式で一覧として取得します。

#3. 実装内容
1. “describe_config_rules()“APIを使い、ルール一覧作成

#4. 参考
– [Boto3 Docs 1.20.4 documentation – Config -](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/config.html#id116)

元記事を表示

[Python]デフォルト値を持つ引数の前にはアスタリスクを設けておくと堅牢で良いかも、という話

# TL;DR

Pythonでデフォルト値を取る引数に関してはその前にアスタリスク(`*`)の引数設定があるとキーワード引数を前提とする縛りを設けられて引数順や引数の追加などをした際に影響が少なくて堅牢で良さそう、という話です。

# きっかけ

先日タイムラインに以下のようなツイートが流れてきて拝見しました。

【Python】dhash実装【OpenCV】

## はじめに
OpenCV Pythonを使ってdhashを利用した画像の類似度計算を行いたかったのですが、メソッドが存在しなかったため手実装しました。
OpenCVとnumpyを利用しています。

## ライブラリに頼る場合
https://pypi.org/project/dhash/
というライブラリがあるようです。
実装もこれを参考にしました。

## 実装方法
上記ライブラリの実装を見てみます。

– Convert the image to grayscale
– Downsize it to a 9×9 thumbnail (size=8 means an 8+1 by 8+1 image)
– Produce a 64-bit “row hash”: a 1 bit means the pixel intensity is increasing in the x direction, 0 means it’s decreasing
– Do the same to produce a 64-bit “column hash” in the y direction

元記事を表示

AsanaのAPIを使ってタスクのストーリー(アクティビティ)までを取得してみる

こんにちは。

これはHameeの2021年のアドベントカレンダー、6日目の記事です。

https://qiita.com/advent-calendar/2021/hamee

同じくアドベントカレンダーの @yamamoto_hiroya さんの[4日目の記事](https://qiita.com/yamamoto_hiroya/items/4063e8b31c2ecd9193c7)にもあるのですが、この11月からHameeの開発部署のプロジェクト管理をRedmineからAsanaに変更しました。その関係で、旧来できていた運用の再現や、手間をはぶく新しい運用の適用やツールの作成が急ピッチで進められていました。

https://qiita.com/yamamoto_hiroya/items/4063e8b31c2ecd9193c7

そしてタスクのステータスをAsana上のセクションで管理するようになったのですが、あるとき、そのタスクの差し戻し回数や、保留されている時間を知り、プロジェクト管理の見える化をはかろうとしました。ここではそのためにおこなったAsanaのAPIの疎通方法

元記事を表示

OTHERカテゴリの最新記事