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

Python関連のことを調べてみた2022年10月27日
目次

【AWS Lambda レイヤー】設定したときにハマった話

# 初めに
AWS Lambda でBoto3の最新バージョンを使いたくて、レイヤーを設定する際にハマった箇所の備忘録です。

### (そもそも)なぜレイヤーを使う?
AWS Lambda でPythonのBoto3を使うとき、
* デフォルトでのBoto3は __Ver.1.20.32__
* 最新のBoto3は __Ver.1.25.1__

となっていました。何が問題化かというと、公式ドキュメントに書かれているサンプルコードの通りに実装しても動かないんです!!(ひどい落とし穴)

### 前提
この辺りを参考にしながら進めました。とてもに参考になります。
本記事ではレイヤーの作成方法は記載しませんので、レイヤーの作成方法自体わからないという方は下記サイトをまずはご覧ください。

https://dev.classmethod.jp/articles/lambda-boto3-layer/

https://qiita.com/shimajiri/items/e0e41f2c7a8ac99f3253

# 本題
## 罠1:フォルダパス
### 動かなかったもの
“`
b

元記事を表示

TrOCRのモデルをONNX化するのにハマった点

# decoderとencoder別々でONNX化しなければならなかった。
TrOCRのモデルをONNX formatに変換するときにハマったのでメモ。
[Pytorchのチュートリアル「EXPORTING A MODEL FROM PYTORCH TO ONNX AND RUNNING IT USING ONNX RUNTIME」](https://pytorch.org/tutorials/advanced/super_resolution_with_onnxruntime.html) をみると`torch.onnx.export`に作ったモデルを通せば良いんだなーとだけ思っていたが、TrOCRのようなtransfomerが入ってるモデルだと、エンコーダーとデコーダーでそれぞれ`torch.onnx.export`する必要がある。例えばこんな感じ↓ 
“`
torch.onnx.export(trocr_encoder,
x,
“trocr_encoder.onnx”,

元記事を表示

SeleniumでスクレイピングをするためのTips

# はじめに
本記事はSeleniumでスクレイピングをするための要素の取得方法や、デバッグの考え方などについて記載しています。

本記事の環境についてSeleniumは4.4で、ブラウザはchromeを使用しています。
Seleniumの環境構築の方法は、以前書いた[ルーチンワークはPythonにやらせよう Seleniumで勤怠処理を自動化する](https://qiita.com/Brutus/items/caec20b979db6d49a29a)をご参照ください。

## 前提を確認する
前提が正しくない場合は、デバッグに無駄な時間が発生します。
スクレイピングを実行していて、`NoSuchElementException`の例外が出力された場合は、前提を確認しましょう。

### URLが正しいこと
`NoSuchElementException`の例外が出力された場合は、要素を取得しようとしているページのURLが正しいことを確認しましょう。
[HTTPのリダイレクト](https://developer.mozilla.org/ja/docs/Web/HTTP/Redire

元記事を表示

pandasからNVIDIA RAPIDSに変えると40倍速くなった件

データ分析にPython pandasを利用していて、計算にかなり時間がかかっていたのですが、GPU計算ライブラリRAPIDSに変えるとかなり高速化できたので、その知見を共有させて頂きます。

# 1. 演算内容 – トレードシステムにおけるバックテスト
株式会社オークンでは、現在自動トレードシステムを開発しています。
トレードシステムでは機械学習を用いた投資判断を行うものが多いですが、我々は**人間の本質的な心理、普遍の真理を追求した「演繹的」な投資戦略**によりトレードシステムを構築しており、我々のシステムの大きな特徴です。

開発の主な流れとしては、プロジェクトメンバーであるプロのトレーダーが考案した投資戦略について、投資戦略の評価・改善を行うためにバックテスト(過去の株価データを用いた売買シミュレーション)を行います。

投資戦略は40以上存在し、さらにパラメータを最適化するべく、各投資戦略について数十~数百程度のパラメータの組み合わせでバックテストを行う必要があります。

# 2. 開発上で困っていたこと – 膨大なデータ量、処理時間への対応

バックテスト

元記事を表示

キーエンスプログラミングコンテスト2022(ABC274) A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

キーエンスプログラミングコンテスト2022(AtCoder Beginner Contest 274) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

https://qiita.com/sano192/items/54accd04df62242b70f0

更新時はツイッターにて通知します。

# キーエンス様について
採用情報

https://www.keyence-jobs.jp/

https://job.axol.jp/pm/c/keyence/public/top

# A Dif:23

https://atcoder.jp/contests/abc274/tasks/abc274_a

単純にB/Aを四捨五入して3桁目までを出力すればいい・・・だけなのですが四捨五入の処理は意外と難しいです。
こういうときはあまり考え込まずにさっさと「python 四捨五入」で検索しましょう。
やりかたはいくつかありますが、公式解説の通りfを使うのが楽です。

元記事を表示

Python3.11がどれくらい高速化したのか

# はじめに
Pythonといえば人口の多さとライブラリの豊富さと情報の多さが強みで
初心者でも簡単に実行できるしWebフレームワークから機械学習までなんでもOKな万能言語

ただひとつ問題点を上げるなら実行速度がナメクジ
C言語もこれにはニッコリ

ところが今回の3.11ではこれが従来比平均1.25倍らしい
すげえ

# さっそく試してみた

Pythonで重たい処理といえばforループとListへのappendだと思ってます
なので適当に100万回forループさせて処理速度を計測してみました

“`python
import time

s = time.time()
l = []
for i in range(1000000):
l.append(i)

print(time.time() – s )

“`
比較したのはPython3.10
それぞれ10回実行した結果とその平均が下記

||3.10|3.11|
|–:|–:|–:|
|1|0.151611089706420|0.110505104064941|
|2|0.127127647399902|0.1

元記事を表示

先頭から文字列検索

## 目的
pythonで先頭の文字列のみを検索したく調査した。
ab, →abを対象とする。
下記2つの方法を組み合わせて解決できた。

## 先頭・末尾から抽出
先頭から始まる文字列、または、末尾で終わる文字列のみを抽出したい場合はメタ文字^(先頭にマッチ), $(末尾にマッチ)を使う。

## 複数のパターンで抽出
複数のパターンのいずれかにマッチする部分を抽出したい場合は|を使う。正規表現パターンA、パターンBをA|Bのように記述する。

## 解決例
~~~
import re

s1 = ‘abcccccabccab’
s2 = ‘→abccdfs→abf’
print(re.findall(‘^ab|^→ab’, s1))
print(re.findall(‘^ab|^→ab’, s2))
~~~
<出力>
[‘ab’]
[‘→ab’]

元記事を表示

Pythonで動画からフレームレートを抽出する

## 目的
私が研究している人工知能では、動画からフレームレートを抽出して大量の画像データを取得しています。そのフレームレートの抽出方法をPythonを用いてここに残しておきます。

## ソースコード
“`Python
import cv2
import os

save_dir=”./hogehoge” #抽出した画像を保存するディレクトリを記載
cap=cv2.VideoCapture(“./hugehuge.MP4″) #読み込む動画のディレクトリ
if not cap.isOpened():
sys.exit()
n= 0
while True:
is_image,frame_img = cap.read()
if is_image:
# 画像を保存
outfile=save_dir+”/”+str(n)+”.jpg”
cv2.imwrite(outfile, frame_img)
else:
# フレーム画像が読込なかったら終了
break
n += 1

元記事を表示

【Python】妻に真夜中のダンスレッスン予約を強要されたので、Webスクレイピングで回避を試みようとしている話 (9.会員・予約情報を読み込む。)

前回は、「8.ブラウザを開いて閉じる。」について投稿しました。
今回は、openpyxlライブラリを使用して会員・予約情報を取り込みます。

——————————————————————————————-
## 必要なパッケージを importする。
“`reserveLesson.py
5: from openpyxl import load_workbook
6: import os
“`
### 詳細処理説明
:::note info
5: openpyxlライブラリの load_workbook関数をインポートします。
–  会員・予約情報Excelファイル読み込みで使用します。

6: osライブラリをインポートします。
–  Excelファイルパス取得で使用します。
:::

## 定数を定義します。

元記事を表示

ESP32からFlaskサーバにデータを送る方法

## はじめに
ESP32に接続した距離センサからFlaskサーバにその取得データを送れるよう試みました。

## 前提
使用機器
– ESP32
– uPYCraft
– VL53L1X 距離センサ
– WSL Ubuntu(Flaskサーバ)

>upyCraftの導入/初期セットアップはこちらを参考に!
>https://qiita.com/sirius1000/items/0d8aad6abae996051ff6

## 流れ
1. ESP32起動時の初期実行プログラム(boot.py)を記述し, ESP32に格納
1. ESP32をFlaskサーバと同じネットワークセグメント内に接続
1. Flaskサーバにデータを送るプログラム(send.py)をESP32に格納
1. Flaskサーバ側で受信するプログラムを記述&サーバ起動
1. ESP内のsend.pyを実行し, 受信の可否を確認する

## 実装
#### ①ESP起動時の初期実行プログラム(boot.py)を記述し, ESP32に格納
まず, ESP32起動時に実行されるプログラムboot.pyを作成します。

元記事を表示

networkxで生成したネットワークをCytoscapeで可視化する

# モチベーション
ネットワークを可視化するためにnetworkxを使っていたのですが、ノード数が多くなるとnetworkxで自動計算されるレイアウトだと見やすさに限界が出ます(ノードが重なり合ってつぶれてしまう)。そこで、networkxで生成したグラフを流用してより柔軟な可視化が可能なCytoscapeを用いた可視化を試してみます。

# 手順
ゴールは相関係数をもとにした各要素間のネットワークの可視化です。相関係数の計算とnetworkxでの可視化までは以下を参照しています。
– [networkxで重み付きグラフを描画する方法](https://qiita.com/okumakito/items/020c1075fb99ef90a2de)

改めて手順を確認すると
1. 相関係数行列を作成する
“`python
# generate a sample weight matrix
n1 = 10
n2 = 20
n = n1 + n2
np.random.seed(12345)
X = np.ra

元記事を表示

やはりStreamlitは素晴らしかった。REACTはもう要らない・・・泣

https://qiita.com/EasyCording/items/3643c482b29c87841207

前から検討を進めてきたテーマであるが、ついに全面的にReactから離脱する瞬間が来たようだ。

## 内容

そもそも、VIS.JSでネットワーク図を書いていて、すこしユーザービリティを追加しようとして、
REACTを覚えかけていた瞬間であるが、ずばりReactを覚える前に、Streamlitで同様の機能が
さらりと実装できてしまった。

## アプリについて

まずは実物を拝んでもらうことに尽きる。

movie https://fb.watch/goNSkif6Wi/

https://chanmoto-streamlit-app-admin-tutt63.streamlitapp.com/

## 追加仕様

今回追加した仕様は、参加者ごとのフィルタ機能である。

仕様の追加は何のことは無い。

・マルチセレクトでdataframeからユニークなラベルリストを抽出
・選択された名前で、dataframeにチョメチョメ処理を追加

たったのこれだけである。

“`p

元記事を表示

PandasからPolarsに乗り換えるときに対応した変更点

# 初めに

`Polars`というDataFrameライブラリが速くて話題になっているということで、`Pandas`の既存資産への変更点をまとめました。

# 準備
“`console
pip install numpy pandas polars
“`

“`python
import polars as pl
import pandas as pd
import numpy as np
“`

## pandas.DataFrame
“`python
pddf = pd.DataFrame(
{
“a”: np.arange(0, 5),
“b”: np.arange(10, 15),
“c”: np.arange(20, 25),
}
)
“`

“`console
a b c
0 0 10 20
1 1 11 21
2 2 12 22
3 3 13 23
4 4 14 24
“`

## polars.DataFrame
“`python
pldf =

元記事を表示

Supership株式会社のインターンで検索基盤を作ってデプロイした話

# 初めに
2022年の9/2~9/15で開催されていた、Supership株式会社のエンジニアサマーインターンに参加してきたので、体験記を残したいと思います。

Supershipではサマーインターンの実施自体は初らしく、
最初のインターン生として、敷かれていないレールを歩いていく感じが最高に楽しかったです!

募集されていたコースは2つあり、私は検索コースに参加しました。

# 環境
技術的な要素とそうでない部分に分けて、10日間どんな感じだったかの雰囲気を整理します。

## 技術
– バックエンド
– FastAPI (Pythonの軽量フレームワーク)
– Elasticsearch
– フロント
– React
– インフラ
– docker compose
– Google Cloud
– バージョン管理等その他
– git
– Gatling (scalaで負荷テスト)

## 非技術
– 4人チーム(学生3人、メンター1人)
– プロジェクト管理**自由!**
– 技術選定**自由!**
– 月曜の**午前中休

元記事を表示

maya python humanIK retarget

https://github.com/aizwellenstan/maya_hik_retarget_tool
“`md
## Script Flow
1. Open New Scene
2. Get Default Hik List
3. Import Source Fbx
4. Rename Fbx with ‘source:’ namespace
5. Save source hik to list
6. Import Target Fbx
7. Get Target Hik from diff between cuurent hik list and default+source hik list
8. Retarget target Hik to source
9. bake
“`

“`merge.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import maya.cmds as cmds
import pymel.core as pm
from maya import mel

def GetHikList():

元記事を表示

maya python qt sample

https://github.com/aizwellenstan/maya_hik_retarget_tool
“`python
#-*- coding:utf-8
VERSION = ‘v1′

import os
import sys
import maya

sys.path.append(r’../Qt.py/python’)
from Qt import __binding__, QtGui, QtCore, QtWidgets
if __binding__ == ‘PySide2’:
import pyside2uic as pysideuic
from shiboken2 import wrapInstance
elif __binding__ == ‘PySide’:
import pysideuic
from shiboken import wrapInstance

import maya.OpenMayaUI as apiUI

def getMainWindow():
pointer = apiUI.MQtUtil.ma

元記事を表示

pythonで「異常検知と変化検知」を読む3 近傍法による異常検知

「異常検知と変化検知」は異常検知の本です。アルゴリズム部分をpythonで実装していきたいと思います。たくさんの方が同じ内容をより良い記事でとして投稿しています。

個人的な勉強のメモ書きとなります。
コードがかなり汚いです。申し訳ありません。
まとめることが目的ではないので本文について参考書とほぼ同じ表現となっています。問題があればお教えください。
興味を持ったり、導出や詳細などを知りたい方は「異常検知と変化検知」を読んでいただければと思います。

## 参考

https://www.amazon.co.jp/%E7%95%B0%E5%B8%B8%E6%A4%9C%E7%9F%A5%E3%81%A8%E5%A4%89%E5%8C%96%E6%A4%9C%E7%9F%A5-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%

元記事を表示

Flaskでログイン画面を実装するときの備忘録

# 概要
Flaskでログイン画面を実装するときの覚え書き。

# ファイル構成
“`
.
├── Dockerfile
├── __init__.py
├── app.py
├── models
│ ├── __init__.py
│ └── models.py
├── requirements.txt
└── templates
├── __init__.py
├── index.html
├── login.html
└── signup.html
“`

# models.py
“`python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, UserMixin

app = Flask(__name__,template_folder=’../templates’)
app.config[‘SQLALCHEMY_DATABASE_URI’]= ‘postgresql:

元記事を表示

Pythonの高速Webフレームワーク FastAPI に、rinna社の言語学習済みモデル(計4.7GB)を搭載して、Cloud Run で動かしてみた

# この記事はなに?

3行でまとめるとこうだよ。

1. Pythonの高速Webフレームワーク FastAPI に
1. rinna株式会社が公開している日本語特化の事前学習済みモデル(計4.7GB)を載せて、
1. 文章の空欄埋めや自動生成をできるDockerコンテナを Cloud Run で動かしてみた

学習済みモデルを2件まとめてDockerイメージ内に組み込むから、イメージサイズはかなり膨れ上がるよ。 **モデルだけで4.7GB、他を合わせるとおよそ5GBのコンテナイメージになる。**

だけど Google Cloud Run には「Dockerイメージのサイズが大きくても起動が早い」という強みがあるから、たとえDockerコンテナイメージのサイズが5GBを超える巨大なものだったとしても、ある程度まともな速度でコンテナを起動してくれるかもしれない…という(甘い)期待のもとにこの構成を試してみたよ。

▼ 参考
> Cloud Run のコンテナ イメージ ストリーミング テクノロジーのため、コンテナ イメージのサイズは、コールド スタートやリクエストの処理時間に影響

元記事を表示

twitter apiとtkinterでツイート送信画面を作ります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2134624/bb897907-f1b7-de48-645d-dca678184184.png)

# 環境
windows11
Python 3.9.6
# はじめに
今回はtwitter apiとtkinterでツイート送信画面を作ります。twitter開発者登録のやり方やトークン類の取得の仕方は説明を省略しています。
# コード
トークン関係をまとめるkeys.pyと画面関係をまとめるgui.pyに分けてコードを書きます。
“`python:keys.py
import tweepy

class Apikeys:
CK = ” # Consumer API key
CKS = ” # Consumer API Secret key
AT = ” # Access token
ATS = ” # Access token secret
auth = tweepy.OAuthH

元記事を表示

OTHERカテゴリの最新記事