Python関連のことを調べてみた2022年06月19日

Python関連のことを調べてみた2022年06月19日

Atcoder参加記録 ABC256 PythonでC~E

# C – Filling 3×3 array
https://atcoder.jp/contests/abc256/tasks/abc256_c

全探索で解いていきます。
1行目をrow1、2行目をrow2。1行目の1列目のデータをrow1[1]、2列目のデータをrow1[2]と表記します。
`h1 = row1[1] + row1[2] + row1[3]`よりrow1に関して、
row1[1]とrow1[2]が決まれば、`row1[3] = h1 – (row1[1] + row1[2])`と自動的に決まります。
row2についても同様に1列目・2列目が決まれば自動的に決まります。
row3について、`w1 = row1[1] + row2[1] + row3[1]`より
`row3[1] = w1 – (row1[1] + row2[1])`と自動的に決まります。2列目・3列目についても同様です。
実装については、forの4重ループは自分が混乱しそうだったので、
`合計でxになる正整数3つの組み合わせ`を返す関数を`get_value_combination`として定義し、r

元記事を表示

Knight Tourで経路も求める

[Knight Tour Problem (Graph – Breadth First Search)](https://www.gohired.in/2017/12/22/knight-tour-problem-graph-breadth-first-search/)をPythonで解いてみた。
これはチェス盤上にて開始から終了位置までのナイトの最短手順数を求めるものであるが、[チェスのナイトが出発地点から目標地点まで移動する時のルートを保存、出力したい。BFS Knight’s Tour](https://teratail.com/questions/kkp25nbd6nz4y7)で質問されているように途中の経路も出したい。
基本的な流れとしては過去に通った位置をすべて持ったまま幅優先で探索していけばよい。
幅優先なので最短経路が見つかる。
また、最大キュー数はおおよそ盤面のマス目の総数(8×8)× 駒の移動可能数(8)になるはず。
以下コード。やっぱりPythonは楽だ。

“`Python
from collections import deque

SIZE = 8 # 盤

元記事を表示

SAM CLIを用いたLambda Layer 検証方法メモ

## Lambda Layerとは

* 複数のLambda関数で外部ライブラリやビジネスロジックを共有できる仕組み

* メリット

* ライブラリなどの共通コンテンツをレイヤーとして作成することで、パッケージにライブラリを含める必要がなくなる。

* アップロードされたデプロイアーカイブのサイズを縮小し、デプロイスピードを高速化できる。

## 検証

* DynamoDBアクセス共通処理をLayer化し、SAMで検証用APIを作成する。

### 事前準備

* DynamoDB環境構築

* `docker-compose.yml`

“`yaml
version: ‘3’

services:
dynamodb-local:
container_name: dynamodb-local
image: amazon/dynamodb-local:latest
user: root
command: -jar DynamoDBLocal.jar -share

元記事を表示

API Gateway + Lambdaを用いた外部APIリクエスト中継用エンドポイントの作成 メモ

* アプリから外部APIを呼び出す際、一度API Gateway + Lambdaの中継用エンドポイントで受けて転送したいケースがあった。

![]()![lambda_proxy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586535/ac5e0f9b-ecbe-a6a1-ee79-390cf7281f23.png)

* SAMで作成してみたので、メモとして残しておく。

## 事前準備

* プロジェクト作成

“`shell
sam init
“`

※RuntimeにはPython 3.8を選択し、テンプレートには、Hello Worldテンプレートを使用。

## コード

* `swagger.json`

* API定義

“`json
{
“openapi”: “3.0.0”,
“info”: {
“version”: “2016-09-12T17:50:37Z”,
“title”:

元記事を表示

ExcelファイルをPythonでデータ分析する (2.グラフ)

**ExcelファイルをPythonでデータ分析する**
[1.Excelファイルの読み込み](https://qiita.com/toyohisa/items/d8d7c8179adb708476d6) – 2.グラフ – [3.度数分布]() – [4.ランキングチャート]() – [5.相関]() – [6.ディシジョンツリー]()

「ExcelファイルをPythonでデータ分析する」は上のような一連の記事になっており、2~6までは事前に1.Excelファイルの読み込みが行われていることを前提としています。

# 人口グラフ

#### 全国の人口グラフ

まず手始めに、全国の総数を折れ線グラフで描画します。描画に必要なmatplotlib.pyplot、および日本語でキャプション等が記述できるようにするjapanese_matplotlibをインポートします。最初に、年の一覧を作成しておきます。df0のDataFrameは、年ごとに”総数”,”男”,”女”の3つのデータがあるため、まず”総数”のみを取り出し、正規表現によって年の部分だけを抽出して一覧を作成しています。

図の

元記事を表示

サンプルを通じたPandasとPySparkデータフレームの比較

[Pandas vs PySpark DataFrame With Examples \- Spark by \{Examples\}](https://sparkbyexamples.com/pyspark/pandas-vs-pyspark-dataframe-with-examples/amp/)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

PandasとPySparkデータフレームの違いを、定義、機能、利点、作成方法、互いに変換する方法のサンプルを通じて学びましょう。

# Pandasとは?

Pandasは分析のために構造化表データを取り扱うために最も使用されているオープンソースのPythonライブラリの一つです。Pandasライブラリは、データ分析、機械学習、データサイエンスプロジェクトなどで多く使われています。

Pandasは、CSV、JSON、SQLなどのフォーマットからデータをロードすることができ、(SQLテーブルと同じように)行と列を含む構造化オブジェクトで

元記事を表示

Shopifyのページネーションで全プロダクトとタグをGET

# Shopifyページネーションの関数
ShopifyApiライブラリ試したが、ドキュメント少ないし、Webhook登録で挙動がおかしい&Github Issueで指摘されているにも関わらず回答放置(?)のようで、頼らないことにした。

“`python
# , , は自分でセットしてね

shop_url = f”{SHOP}.myshopify.com”
api_version = “
baseURL = rf”https://{shop_url}/admin/api/{api_version}/”
headers_ = {‘Content-Type’: ‘application/json’,
‘X-Shopify-Access-Token’: ACCESS_TOKEN}

def get_productsANDtags():
import re, requests

products = []
next = “”
rel = “

元記事を表示

sys.path.append() を使わないでください

# sys.path.append() を使わないでください :sob:

## はじめに

まず結論だけ言います。 Poetry を使って `sys.path.append()` を封印しましょう。

## なにがあったのか

それは新たな開発チームに配属されて、キャッチアップのためにPJのコードを読んでいたときのことでした。

「ん?このモジュールには `sys.path.append(“/path/to/src”)` があるぞ?ってことは……」
「やられた!ありとあらゆるモジュールとテストに `sys.path.append(“/path/to/src”)` がいる!!」

![スクリーンショット 2022-06-19 7.41.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127680/87c36e35-0468-4d63-d605-26f15d3de3d4.png)

## なぜ問題か

ひとことで言えば、モジュールがパスに依存します。では、一体どういう問題が起きるのか?具体例を見ていき

元記事を表示

U.F.O. SAをPythonistaで操作する方法

U.F.O. SAでbluetoothによって音声同期できると聞いて購入したものの専用のアダプタをPCに挿さなくては使えないらしい。

アダプタを買うために送料を払うのもためらわれるし、わざわざ音声作品を聞くためにパソコンを起動するのも面倒くさい。

そこで、iPhoneから操作すれば、無料だし(無料とはいってない)、寝る前にすぐに使えて便利ということで、iPhoneにおいて最強のPython統合開発環境、Pythonistaを用いてU.F.O. SAを操作できるようにした。

#### 準備するもの
– U.F.O. SA
– iPhone or iPad
– Pythonista (有料アプリ)

#### 参考にしたサイト

[騎士の物語](https://yihuishou.github.io/2020/10/10/2/)
中国語のサイトです。Google翻訳を駆使してください。

[Pythonista cb module](https://omz-software.com/pythonista/docs/ios/cb.html)
Pythonistaの公式のcb modul

元記事を表示

Pythonを用いて母比率の信頼区間を求める 〜ナンパの成功確率〜

# はじめに
Pythonを用いて、母比率の信頼区間を求めます。

# 設定
R君は通算1000回のナンパ経験があり、そのうち230回成功しているとします。
その場合のナンパ成功の母比率を求めます。

# 統計学の知識
– 母比率の区間推定に関する知識
[21-1. 母比率の信頼区間の求め方1 | 統計学の時間 | 統計WEB](https://bellcurve.jp/statistics/course/9122.html)

# scipyを使う場合
## コード
“`python:main.py
“””ナンパの成功確率を推定する”””
import math
from typing import Dict

from scipy.stats import binomtest

if __name__ == “__main__”:
# ナンパ回数
num_of_hitting_on = 1000
# ナンパの成功回数
num_of_success = 230

result = binomtest(num_of_success, num

元記事を表示

Amazon Inspectorの診断結果から”High”のみ抽出して通知する

# はじめに

ご覧いただきありがとうございます。

Amazon InspectorでEC2の脆弱性診断を行い、評価結果が”High”の対象のみを抽出してSNS通知を送れるようにしてみました。

# 概要

1. Inspector~SNS~Lambda間の連携確認
2. Lambdaの実装
 

# 事前準備

– AWSアカウント作成
– AdministratorAccessを付与したIAMユーザーの作成
– EC2作成/Amazon Inspectorのセットアップ

診断を行うと、AWSマネジメントコンソールから、診断結果をダウンロードできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2697264/84731db8-dcf4-f8e8-4389-965f5b8e7b0c.png)

High,Mediumが混在した38件の結果が表示されました。
それぞれ個別に内容を確認できます。

今回は診断結果が”High”のものをフィルタリングして、Lambdaを経由してEメ

元記事を表示

python 算術演算子一覧

(この記事はqiitaのMarkdown記法練習記事です)
***
– 足し算
– \+ を使うと足し算ができる
“` py
#+の使用例
20 + 10
>>>30
“`
– \+は文字列の結合もできる
“` py
#+(文字列の結合)の使用例
“Hello” + “World!”
>>>HelloWorld!
“`
– 引き算
– \- を使うと引き算ができる
“` py
#-の使用例
20 – 10
>>>10
“`
– 掛け算
– \* を使うと掛け算ができる
“` py
#*の使用例
20 * 10
>>>200
“`
– \*は文字列の繰り返しもできる
“` py
#*の使用例
“hello” * 2
>>>hellohello
“`
– 割り算
– / を使うと割り算ができる
“` py
#/の使用例

元記事を表示

venvのpython仮想環境をgitで共有する

“`terminal: terminal
mkdir test
cd test
mkdir a.git
cd a.git
git init –bare
cd ..
git clone a.git
cd a
curl -o .gitignore https://raw.githubusercontent.com/github/gitignore/main/Global/VirtualEnv.gitignore

python3 -m venv .venv
source .venv/bin/activate
pip install pip-autoremove matplotlib
pip freeze > requirements.txt
deactivate
git add -A
git commit -m “initial commit”
git push

cd ..
mkdir b
cd b
git clone ../a.git
cd a

python3 -m venv .venv
source .venv/bin/activate
pip install -r requ

元記事を表示

CmdStanPyがColab上でも動いてほしい

# やったこと

– 参考文献1.を参考に`GoogleColaboratory`上で`CmdStanPy`の動作確認をしました。

– やった結果のノートブックを以下のリポジトリにアップロードしました。

– https://github.com/yaminabeworks/cmdstanpy_colab_test/blob/main/stan2cmdstanpy.ipynb

# なぜやったか

– `PyStan`と同じように、`CmdStanPy`も`GoogleColaboratory`上で動くとよいと感じたため。

– 本記事のテスト結果から、手元に環境がなくても`Stan`ファイルを作って`GoogleColaboratory`上で試せるはずです。

# 参考文献

1.は、`CmdStanPy`環境を`Docker`で構築しているサイトで大変参考になりました。ありがとうございました。

2.は、自分の書いたマジックコマンドの`writefile`を利用した記事となっています。

1. https://qiita.com/amber_kshz/items/172e

元記事を表示

時系列データ解析でよく使うsliding windowをつくってみた。

# はじめに

配列を一定幅で切り出して分割する、いわゆるsliding windowは時系列データなどを扱うときに何かと便利です。[ピリオドグラム](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.periodogram.html#scipy.signal.periodogram)や[ウェルチのパワースペクトル](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.welch.html#scipy.signal.welch)、[短時間フーリエ変換](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.stft.html)などよく使われているのですが、see alsoに分割するときに用いる関数が載っていない。

ということで調べてそれっぽい引数で作ってみることにしました。といっても[`numpy.lib.stride_tricks.sliding

元記事を表示

Flaskをベースにフレームワーク作ってみた

# この記事は?
Webページを制作するにあたり、flaskを使うことがままありますが、簡単な機能については共通化したりできないかなと考えてFlaskを少し拡張したという意味でBeakerと名付けてWebページを簡単に作れるような機能を提供できないかと考えました。
現時点では作成中ですが、本当に簡単な画面であれば作れるようになってきたので現段階でご紹介したいなと思います。
今後の拡張は随時行っていく予定なので今の機能がそのまま残っている保証はないのですが、そういうものだと割り切って見ていただけたらと思います。また、使ってみたいなという人がいれば自由にforkいただければと思います!

* 実際に作っているものは下記にあります

https://github.com/KiharaTakahiro/beaker

# どんなことができるの?
* web.pyによるルーティングの一元管理
* POSTの場合はCSRFトークンが必要になる設定
* ログ出力機能
* セッションの使用
* DBとの接続およびトランザクション機能
* CSV出力機能
* カスタムフィルタの使用

## web.py

元記事を表示

fastaiを使ってDLを学ぶ その1

# なぜ、DLをやってみようと思ったのか
私はフツーの事業会社に勤める20代会社員です。これまで、ML関連のカンファレンスに参加したり、トップ講師のありがた~い講義とかを受けてきました。でも、「自分じゃ何もできない」日々が続いていることに気がつきました。かつては、AI専業のベンチャー企業に在籍していたりもしましたが、同僚含め上司の技量が凄すぎて「自分が在籍していい環境じゃない、、」と絶望の日々でした。(上司はパッケージ不使用かつ、空でDL組めるレベル感。やばすぎる。)

そして、「このままじゃあかん、、」と思っていた際に、偉い人の「まずは書け。そして発信しろ。」というありがたいお言葉を思い出し、実行に移したという次第です。

# DLの以外な事実
私もこれはずっと妄信していたのですが、

– ビックデータが前提
– ハイスペPCが必須

これは半分「嘘」であることがわかりました。
(とはいえ、あるならあった方がいいとは思いますが。)

つまり、少ないカラム数でもトップカンファレンス優勝レベルの記録は出せるし、無料GPU環境でも計算自体は全然いける、ということです。

# NNの歴史

元記事を表示

暗号化ライブラリTinkをPythonで使ってみる

# Tinkとは
Google製の暗号化ライブラリです。GitHubのリポジトリは[こちら](https://github.com/google/tink)。
JavaやC++など、いくつかの言語に対応していますが、今回はPythonを使ってみました。

# Tinkのインストール
Pythonの場合、`pip`を使ってインストールできます。
“`
pip3 install tink
“`

# サンプルコード
暗号化と復号化を行う、簡単なサンプルコードを作成してみました。
“`python
#!/usr/bin/env python

import tink
from tink import aead

plaintext = b’your data…’
associated_data = b’context’

# 1.機能の初期化処理。目的の機能をregisterメソッドで有効化します。
aead.register()

# 2.鍵のテンプレートを使って、キーセットを生成
key_template = aead.aead_key_templates.AES256_GCM

元記事を表示

【強化学習】R2D2(+Retrace)を解説・実装

この記事は自作した強化学習フレームワークであるSimpleDistributedRLの解説記事です。
概要は[こちら](https://qiita.com/pocokhc/items/a2f1ba993c79fdbd4b4d)です。

関連知識は以下を参考にしてください。
・[Rainbowについて](https://qiita.com/pocokhc/items/9972a528901c15e42519)(前手法に当たります)
・[分散強化学習](https://qiita.com/pocokhc/items/ca83562fc1469b35d67b)

R2D2については昔記事を書いていますが、知識も更新されているので改めて書いています。
また、本記事ではRetraceを導入しています。

また、R2D2はApe-Xを踏襲しているので一部Ape-Xの説明が入っています。

# 部分観測マルコフ決定過程

詳細に知りたい方は[こちら](https://qiita.com/pocokhc/items/6bf5a9519440fe5bd0d5)を見てください。

R2D2で必要な知識

元記事を表示

【Python 3】Windowsでバージョン確認する方法

# はじめに

WindowsにインストールしたPythonのバージョン確認方法を調べた結果の備忘録。

# 動作環境

– Windows10 バージョン 21H1

# 確認手順

## 1.コマンドプロンプト起動

## 2.バージョン確認コマンド実行

“`shell-session
>python –version
Python 3.10.5

>python -V
Python 3.10.5

>python -VV
Python 3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)]
“`

-VVは バージョン3.6で追加されたらしい。

# 備考

– [ 3.10.4 Documentation » Python のセットアップと利用 » 1. コマンドラインと環境](https://docs.python.org/ja/3/using/cmdline.html)

元記事を表示

OTHERカテゴリの最新記事