- 1. [UE5]ブループリントでPythonファイルの実行
- 2. Python,JavaScript,PHP,Ruby,Perlのインストールの比較
- 3. 【Python】6ケタの英数字が5ケタになってしまう問題をシミュレート
- 4. UbuntuのPythonをダウングレードする
- 5. SSHの使用を禁じられたColaboratoryへの想いは変わらず
- 6. pythonでmediainfoをたたいてみる(iphone動画)
- 7. 【Python】決算情報をもとに日経平均よりパフォーマンスのよい銘柄を予想する
- 8. Bitbakeをpythonから使おう
- 9. ランダムフォレストは欠損値自動処理できないのでしょうか?
- 10. Alembic で create table する migration ファイルを auto gen する際にカラムの順番を調整する
- 11. FastAPI と Vue.js で作るJWT認証
- 12. Mac, Python3 環境で csv の内容を Python の dict リテラルで出力するワンライナー
- 13. PythonでExcelファイルをパスワード保護する
- 14. (続)Vision Transformerでダーツの自動計算をやってみる
- 15. PoetryはColaboratoryで使えない??(2022.08現在)
- 16. pillow+numpyで入力した画像からdlibで顔検知しようとしてfor文2枚目で止まった
- 17. Pythonでちゃんと統計・確率の基礎をやってみた(確率編 前半)
- 18. [Jython]SikuliXによるRPA開発 ~各種ユーティリティ~
- 19. 機械学習初心者の、TensorFlowを用いたパンの種類識別モデルと、Herokuのアプリ制作
- 20. Python 標準入力
[UE5]ブループリントでPythonファイルの実行
Unreal Engine5のブループリントで.pyファイルで書いた関数を呼び出す方法です。
****
**準備**
1)Unreal Engine5のインストール
2)UE5を起動し、プロジェクトを新規する
3)(右上の) Settings → Plugins → `Python Editor Script Plugin`をチェックする
![MicrosoftTeams-image (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727189/4ab90193-f454-b21c-e0d7-6ff7d07b699f.png)
4)UE5再起動プロジェクト内で一番下のところで下記の図通りでPythonファイルが実行可能になります。
Python,JavaScript,PHP,Ruby,Perlのインストールの比較Python,JavaScript,PHP,Ruby,Perlのインストールの比較
# Python
https://qiita.com/disk131/items/a4f74ea9aa9c173cc71a
# JavaScript
https://qiita.com/sefoo0104/items/0653c935ea4a4db9dc2b
# PHP
https://qiita.com/yuya00/items/45312f386a7a0d5d76de
# Ruby
https://qiita.com/Rock22/items/31ab75c87fcf3122f357
# Perl
https://perlzemi.com/blog/20180820153471.html
【Python】6ケタの英数字が5ケタになってしまう問題をシミュレート
## 概要
職場でこんなトラブルに遭遇しました。
「英数字6ケタのパスワードが、5ケタで生成されており、エラーになった」Pythonを使って、このエラーを再現してみました。
## 原因
「英数字6ケタ」で大量にランダム生成されたパスワード文字列のうち、ひとつだけ「数字のみ5ケタ」になっていました。
“012345”のように、先頭が0・残りが数字で生成されたため、Excelファイルでやりとりする際に先頭のゼロが省略されて”12345″になったようです。
(なんでmkpasswdのオプションで指定しないの…)## 発生確率
この事象が起きる確率を計算してみます。
まず、ある1ケタの取りうる値は、[0-9, a-z]なので、10+26=36種類です。
つまり、0になる確率は、1/36。
一方、数字0-9になる確率は、10/36です。今回の事象は、先頭1ケタが0・残りの5ケタが数字になる時なので、
(1/36) * (10/36) * (10/36) * (10/36) * (10/36) * (10/36)
= 0.0000459393658… となります。パーセン
UbuntuのPythonをダウングレードする
Ubuntuで任意のPythonのバージョンにダウングレードする方法を説明していきます
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
実行環境
VMware:Ubuntu22.04
Python3.10.2 → 3.6.15こちら以外では試してませんが、他のバージョンでも可能です
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~バージョン変更の記事を読み、導入できず詰まっていたのですが
大まかには[**Ubuntuで複数・最新のPythonのバージョンを管理する**](https://zenn.dev/kokkosan/articles/vscode-python-version)が合っており流れは変わりませんが、
結果的にはエイリアスの設定とupdate-alternativeなしではできなかったので順に説明していきます。
# ざっと流れ
新規インストールした状態から仮定し
(以下”バージョン”は導入したいPythonの数字として読み進めてください)
SSHの使用を禁じられたColaboratoryへの想いは変わらず
# 前置き(急ぐ方はSKIP)
Google Colaboratory(以下、colabo)上でSSHの使用が禁じられてしまいました。
つまり、そのまま.pyでの実行が禁じられてしまったと判断します。
これからは、Colabo=Jupyterノートブックから開発コードを呼び出さねばならず、手間が増える事が懸念でした。ColaboProを使用する前だったので、他の手段(別:HPC提供サービス)も検討しましたが、コスパではcolaboがよさそうです。
GPUマシンが壊れたり、買い替え先にNVidia-GPUが無い場合にはColaboが使えるかどうか確認が必要でしたので、次の通り試しましたが、# 結論 : 十分使える
1. 結論的:LocalPCで.pyで開発して,Colabo上で実行させる問題は無い。
1. 変更を要するかもしれない点
1. [PoetryがColabo上で使えない](https://qiita.com/slave/items/172e5c6897dc4577e063)。
1. 私はrequirements.txtに切り替えた。
1. ソー
pythonでmediainfoをたたいてみる(iphone動画)
# はじめに
mp4の動画ファイルとはいえ、コーデックや解像度などは多種多様にある昨今、特にiphoneなどのモバイルデバイスやネット上で手に入る高解像度の動画ファイルは本当に高解像度ファイルなのか、実際にはどんな動画情報を持っているのかが少し気になりました。単純なpythonなどのスクリプトを書いて、手元にある動画ファイルからコーデックや解像度などの動画情報を取得することはできないか調べてみました。最終的にYoutubeへのアップロードまで行い、プラットフォームを通しての再生もできるか確認してみました。
まとめると、本記事でやりたいことは以下です。
– iphoneカメラを4K設定にして動画を撮影する
– 保存された動画情報の取得&検証
– Youtubeでの動画アップロード&再生結果を述べると、**iphoneカメラで撮影した4K映像は、4K動画の情報をしっかり持っていることをpythonスクリプトで確認できました。またYoutubeプラットフォームでしっかり4Kで再生できました。**
# ファイルの用意
情報取得の対象とする動画ファイルはiphoneで撮った4
【Python】決算情報をもとに日経平均よりパフォーマンスのよい銘柄を予想する
Pythonの勉強を始めて半年、オリジナルのプログラムを組むことになったので、
投資に役に立つような分析プログラムに挑戦することにした。Pythonの株価分析というと、日経平均株価などの時系列分析が多いけど、
今回は3000社以上の上場企業を対象にして、それらの企業の決算情報をもとに、
「投資対象として良好な銘柄」を探すプログラムを作ってみる。ここでのよい銘柄とは、「1年後の株価の上昇率(下落率)が、日経平均のそれを上回っていること」。
株価分析のプログラムでよく見る「この後、上がるか下がるか予想」ではなく、1年後のパフォーマンスという、スパンが長く、相対的な指標をターゲットとした。
一般的に、ある企業の業績がよくても、株式市場全体から資金が引き上げられれば、
株価は下がるなど、単体企業の株価も市場全体の動向の影響は避けられないことと、
株価は財務情報の数値ではなく、投資家たちの思惑で動く部分が大半のため、
短期的には決算の数値的な変化とは無関係な動きとなる可能性が高いからだ。上がるときは、日経平均より上がり、下がるときには、日経平均よりは下がらない、そんな銘柄を探す。
Bitbakeをpythonから使おう
# はじめに
yoctoを使ってカスタムしたlinuxをビルドをビルドする仕事してます。
(僕は最近全然仕事してないけど)
この仕事では、例えば以下のようなリクエストが来ます。* 特定のbbclass(core-image.bbclassとか)を継承したファイルをリストアップしてほしい
* すべてのパッケージのある変数(例えばPE,PV,PR)をリストアップしてほしい
* 特定のパッケージ(例えばgcc)にあたってるbbappendファイルをリストアップしてほしい面倒くさくない? 僕はgrepしたくないし、時間かかるからビルドもしたくないんだよ…
# Bitbakeをpythonから使おう
面倒臭いので、なんとかする方法を調査しましょう。
まず、bitbakeコマンドによるビルドの仕組みがざっくりこんな感じ。![bitbake.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185272/a6ed90f5-051a-2bde-6001-b80a3c3431
ランダムフォレストは欠損値自動処理できないのでしょうか?
ランダムフォレストって欠損値があっても処理してくれると聞いたので、全く欠損値処理せずにデータをランダムフォレストで予測させたら、欠損値があるから予測できないといった感じのエラーが出ました。なぜでしょうか?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
data= pd.read_csv(‘/Users/app16/downloads/train.csv’)
data_x=data.drop([‘Id’,’SalePrice’],axis=1)
data_y=data[‘SalePrice’]from sklearn.preprocessing import LabelEncoder
for i in range(data_x.shape[1]):
if data_x.iloc[:,i].dtypes == object:
a=LabelEncoder()
a.fit(list(data_x.iloc[:
Alembic で create table する migration ファイルを auto gen する際にカラムの順番を調整する
# 困ったこと
下記のような model を定義した際に…
“` python3
class Base:
created_at = Column(DateTime, default=func.now(), nullable=False)
updated_at = Column(DateTime, default=func.now(), onupdate=func.now(), nullable=False)BaseModel = declarative_base(metadata=metadata, cls=Base)
class Tenant(BaseModel):
__tablename__ = “tenant”
__table_args__ = (UniqueConstraint(“name”), {})
id = Column(String(36), primary_key=True, default=uuid.uuid4)
name = Column(String(255), nullable=False)
“
FastAPI と Vue.js で作るJWT認証
本記事は、FastAPIとVue.js(**CompositionAPI+Pinia**)で動作するJWT認証のシステムを作ってみたので、備忘録として残すのが目的です。またFastAPIでセキュリティや認証を強いるときは**Dependency Injection**が使われますが、個人的には一般的な概念を理解するよりは、単に使い方を学ぶ方が良いと思われます。
【関連過去記事】
[VueのCompositionAPIでPiniaを使う – Qiita](https://qiita.com/sand/items/fc3acb3df7aa2ad6e208)
[FastAPIでつくるVue SPAアプリの雛形 – Qiita](https://qiita.com/sand/items/4b3e222dbb9315e2b0c0)
[FastAPI OAuth2 クライアント – Qiita](https://qiita.com/sand/items/990afc5d49a37b026acc)
[FastAPI OAuth2パスワード認証 – Qiita](https://qiita.com/
Mac, Python3 環境で csv の内容を Python の dict リテラルで出力するワンライナー
“`
python3 -c “csv_file_path = ‘.csv’; import csv; print([row_dict for row_dict in csv.DictReader(open(csv_file_path))]);” | pbcopy
“`ex.
csv を作成
“`
echo “#,Name,Type 1,Type 2,Total,HP,Attack,Defense,Sp. Atk,Sp. Def,Speed,Generation,Legendary\n1,Bulbasaur,Grass,Poison,318,45,49,49,65,65,45,1,False\n2,Ivysaur,Grass,Poison,405,60,62,63,80,80,60,1,False\n3,Venusaur,Grass,Poison,525,80,82,83,100,100,80,1,False” >> pokemon.csv
“`csv to Python dict
“`
$ python3 -c “csv_file_pa
PythonでExcelファイルをパスワード保護する
PythonでExcelファイルにパスワードを付けたいと思って調べても情報が少なかったので共有します。
今回はWindows環境を想定しています。“`python:protect_excel_with_password.py
from win32com.client.gencache import EnsureDispatch
from openpyxl import load_workbook
from pathlib import PurePathdef set_wb_password_with_win32(file_dir_path, password):
xl_file = EnsureDispatch(“Excel.Application”)
wb = xl_file.Workbooks.Open(file_dir_path)
xl_file.DisplayAlerts = False
wb.Visiable = False
wb.SaveAs(file_dir_path, Password=password)
wb
(続)Vision Transformerでダーツの自動計算をやってみる
# この記事の続き
https://qiita.com/magokorokun/items/4acb31131930d89ab84c前回は、ダーツ1本刺さった状態は95%を超える認識率で、良い感じだったのですが、2本3本の場合、同じところに2本3本刺さった場合(例えば20トリプルに3本とか…まずないけどw)の認識率を高める方法が中々見つからないままでした。
最初は出力64モデル型(各数字のシングル・ダブル・トリプル+インブル、アウトブル、アウトボード、何もなし)でしたが、複数ダーツに対応すべく、64×3=192(同じところに1本、2本、3本)モデル型で学習データを大量に作り学習させました。
結果は思わしくなく、このマルチクラスマルチラベル型モデルは断念しました。
同時にゲーム性を考慮すると、ダーツを1本投げる度に判定ボタンを押すのはイマイチな感じなので、Webカメラでライブ映像を撮影しながら、その映像の変化を捉えて「次のダーツが刺さった」ことを認識するロジックを検討しました。これは比較的簡単で、前回判定に使った画像をベースとして、その画像との差分が一定以上ある画像に変化した
PoetryはColaboratoryで使えない??(2022.08現在)
– Poetryはgoogle Colaboratoryでは使えない様子。
– venv非作成モードで、packageのインストール箇所がわかれば、解決できる可能性はあるかもしれない。
– 解決策が分かる人がいたら教えていただきたい。
– 症状
– 一見、インストールも行われるのだが、vevn-pythonに切り替えられない
– 手動で無理やり使えるかもしれないが、再利用のたびにコード修正は対象外としているため。## venvに切り替わらない
故に、折角パッケージをインストールできても、コードでvenvに切り替えて実行ができない“`bash
# 期待通り表示される。このPATHを「手動」で指定してのvenv-pythonでのrunは可能だろう
!poetry env info –path# 切替1: セルのrunが終わらない
!poetry shell# 切替2: 処理にエラー表示されないが、次のwhich pythonでは/usr/local/bin/pythonを指し、venvのpyを差さない。
!source $(poetr
pillow+numpyで入力した画像からdlibで顔検知しようとしてfor文2枚目で止まった
# はじめに
よくあるpythonのdlibを使用して顔を検出するやつ、だいたいがopencv2を使用して`cv2.imread`とかして読み込んでいるけど、opencv2を使いたくなかった。
そこでpillowで読み込んだ画像をnumpy形式に変換してdlibに食わせようとした。で、画像が1枚の時は無事に動作、画像をfor文で複数与えようとすると2枚目で顔検出しなくなった。
# どういう状況?
コードを一部
入力する画像は同じ人物を同じ角度から撮った顔の画像。
“`python
import dlib
from PIL import Image
import numpy as npface_detector = dlib.get_frontal_face_detector()
image_list=[“01.jpg”,”02.jpg”,”03.jpg”,”04.jpg”,”05.jpg”]
for img_path in image_list:
img = np.array(Image.open(img_path),dtype=np.uint8) ##画像を読
Pythonでちゃんと統計・確率の基礎をやってみた(確率編 前半)
# はじめに
以下の書籍を参考にしながら,統計の基礎を学び直した軌跡,確率編の前半です.この記事は4部構成の2つ目になっています.以下も参照ください.
– [準備〜データ編](https://qiita.com/o93/items/91feef63ea70070462d9)・・・投稿済み
– **確率編 前半**・・・この記事
– 確率編 後半・・・まだ
– 推測編・・・まだこの記事を書いた動機,注意点,使用している技術,記事の構成,準備については[準備〜データ編](htt
[Jython]SikuliXによるRPA開発 ~各種ユーティリティ~
https://qiita.com/Q-Lazy/items/9236db59301e058ce086
前回の記事に引き続き[サンプルプログラム][1]作成の際の、SikuliXを利用したコーディングに関する気付きなどを投稿します。
https://github.com/singularity-effect/TextHelper
[SikuliX][2]には開発を支援してくれる、様々な便利機能が用意されています。個人的によく使用するものを解説します。
[1]: https://github.com/singularity-effect/TextHelper
[2]: http://sikulix.com/## ポップアップダイアログ
よく使われるタイプの定型的なダイアログを利用できます。[Swing][Swing]による実装で、各用途に適したテーマカラーとアイコンでデザインされています。
関数名 | ダイアログの種別
————————|——————
[`popup`][popup
機械学習初心者の、TensorFlowを用いたパンの種類識別モデルと、Herokuのアプリ制作
## 自己紹介
30代後半のエンジニア(?)で、妻と子供3人に囲まれ、ドタバタな毎日を送っています。
仕事は、某製造業に勤めていて、いままでルールベースの画像処理を使ってソフトを作ることはあっても、機械学習は全く扱ったことがありませんでした。この度、機械学習(特に画像認識)を扱う部署に異動し、右も左も分からない状態だったため、自己啓発としてAidemyのAIアプリ開発コース(6ヶ月コース)を受講し、その成果物としてパンの種類識別器を制作したので、実施した内容を以下に示します。ちなみに、7/11から受講を開始して、現在8/16です。1ヶ月ちょっとでここまで来ました。
多少のプログラミングのスキルはあったものの、ちょっと飛ばし過ぎましたかね?復習が足りないのかな?
このコースが終わっても、別のコースを受け放題とのことなので、学習は引き続きやっていこうと思っています。仕事でも徐々に機械学習コードを読む機会が増えてきて、コードを読んだ際に、講座で勉強したことが出てくることもあり、この講座を受けている効果が現れていると実感しています。
正直、まだ損失関数の種類や最適化を理解できていない
Python 標準入力
自分がatcoder などでpythonを使うときのためのメモ
# 二次元配列 数字 (スペースあり)
**入力例**“`
1 3 4 10
2 3 4 5
3 25 3 91
4 5 2 3
“`“`Python
a = [list(map(int, input().split())) for _ in range(n)]
“`
内包表記を使い、`list(map(int, input().split()))`をn回繰り返して入力している
〜細かく説明〜
`list(map(int, input().split()))` ・・・空白ありの数字を配列で標準入力する時のやつ
`input().split()`・・・split()の()の中にsplit(分裂)を決める文字を入れる。何も入れない時は(” “)これが自動で。(” “)は半角スペースでsplitさせるという意味。# 二次元配列 数字 (スペースなし)
**入力例**
“`
4783
1267
6532
9823
“`
4784ではなく4 7 8 4 で二次元配列に格納したい時“`Python
a =