Python関連のことを調べてみた

Python関連のことを調べてみた

Open 3D

# Open 3D
https://github.com/isl-org/Open3D/blob/master/examples/python/geometry/point_cloud_paint.py

http://www.open3d.org/docs/release/tutorial/geometry/pointcloud.html

https://qiita.com/n_chiba_/items/fc9605cde5c19a8c7dad
## Open3Dのインストール
https://qiita.com/kosei1515/items/6881d9dd571dff1d29a3

### トラブルシューティング
https://jp.easeus.com/data-recovery-solution/python-setup-py-egg-info-failed-with-error-code-1.html

* “illegal instruction (core dumped) “とか表示されたとき
これはWindows上でvirtual boxを使って動かし

元記事を表示

PyWin32 の Outlook でフォルダ内のメールが処理できない問題を解決する

今回は PyWin32 の Outlook で、特定のフォルダ内にあるすべてのメールが処理できず、半分のメールしか処理できない問題を解決できた忘備録として記事を投稿します。

# 今回使用するコードと実行例
下書きボックスの中にある `python_drafts` に存在するメールをすべて削除済みアイテムボックスの中にある `python_deleted` に移動するというソースコードを想定します。

今回の特定のフォルダのメールをすべて移動させることを例に挙げておりますが、移動させることに限らず、フォルダ内のメールすべてに対して~~するという処理に対応します。

“`Python: main.py
import win32com.client

outlook = win32com.client.Dispatch(‘Outlook.Application’).GetNamespace(‘MAPI’)
draft = outlook.GetDefaultFolder(16) # 16: 下書き
deleted = outlook.GetDefaultFolder(3) # 3: 削除

元記事を表示

プログラミング言語を選ぶ

どのプログラミング言語を学ぼう???

そこでプログラミング初めましてな人向けに,独断と偏見で各言語の違いを分類しておく.

# プログラミング言語とは?
人は言葉を介して意思や考えを共有するが,コンピュータは言葉を理解できない.コンピュータは電流のON/OFFで表される「0/1の数字の組み合わせ」のみを理解する.

しかし,人間がコンピュータに命令したいとき,毎回「0/1の数字を組み合わせて」命令書を記述するのは滅茶苦茶大変!(昔の人はやってたらしいけど….)

**そこで生まれたのがプログラミング言語である.**
プログラミング言語は比較的,人の言葉に近い形の文法構造を持っており,0/1より理解しやすい形をとる.

プログラミング言語で書かれたソースファイルをコンピュータの理解できる0/1で書かれた実行ファイルに変換することで,コンピュータに思い通りの動きをさせることが出来る.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3250323/0209d214-cff5-34fd-

元記事を表示

相互情報量

## 前提
単語の意味はその周囲にある単語によって決定される(分布仮説)ので、周囲にある単語が類似している=その単語の意味が類似しているとみなすこともできる
– 例
– `the car`という単語の連続はよく見るが、`car drive`という2つの単語には明らかに関連性がある
– しかし`the`の出現頻度が高いのでカウントベースの方法では「`car`という単語は`drive`という単語より`the`という単語の方が関連性が高い」ということになる(実際の感覚とはかなりズレる)

これには単語の出現頻度が悪さをしている。`the`は出現頻度がめちゃくちゃ多いので、色々な単語との関連性を示しやすい。出現頻度を考慮して単語同士の関連性を関連性をはかりたい。

## 相互情報量の導入
相互情報量(Pointwise Mutual Information)の数式は以下
“`math
PMI(x,y) = \log{2}{\frac{P(x,y)}{P(x)P(y)}}
“`
分母の$P(x,y)$は単語`x`と単語`y`が共起する確率、$P(x)$と$P(y)$は文中に単

元記事を表示

【備忘録】Google Colabでmoviepyを使ったときにImageMagick関連のエラーが出るとき

moviepyで動画に字幕を入れようとしたとき、
ImageMagickのエラーで躓いたためメモとして残しておきます。

## 該当コード
“`python
txt_clip = TextClip(“テキスト”)
“`

## エラー内容
“`bash
OSError: MoviePy Error: creation of None failed because of the following error:

[Errno 2] No such file or directory: ‘C:\\\\Program Files\\\\ImageMagick-7.0.8-Q16\\\\magick.exe’.

.This error can be due to the fact that ImageMagick is not installed on your computer, or (for Windows users) that you didn’t specify the path to the ImageMagick binary in file conf.py,

元記事を表示

Flask + SQLAlchemyことはじめ

# はじめに
自分用のWebアプリでFlaskとSQLAlchemyを使う機会があったので、基本部分だけアウトプットします。
今回はUserテーブルでユーザー作成、認証、削除のみ実装します。
割とムリヤリ設計が多いです。

## SQLAlchemyとは
pythonでよく使われているORマッパー。
オブジェクト指向が理解できてれば使えると思います。

## 環境
“`
$ python -v
Python 3.11.0
“`
“` requirements.txt
Flask==3.0.0
Flask_WTF==1.1.1
SQLAlchemy==2.0.20
WTForms==3.0.1
“`

## ディレクトリ構造
“`
project_folder/
├ models/ # SQLAlchemyのモデルを入れる
├ static/ # jsやらCSSやらを入れる
| └ js/
| └ css/
├ templates/ # htmlを入れる
|

元記事を表示

それ,numpy で書かない?– 2 —

## それ,numpy で書かない?

Python ではリストがよく使われる。また,for ループが遅いのでリストに特化したリスト内包表記も推奨されることが多い。

それなりの根拠があるからではあるが…

課題:[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] のような二重リストを作る。

[n×n, 2] の二重リストを trial 回作成し,処理時間の平均値と標準偏差を記録する。

“`Python
from statistics import mean, stdev
from time import time
n = 1000
trial = 100
“`
### 二重の for ループと append()

“`Python
def for_loop(n):
start = time()
list1 = []
for y in range(n):
for x in range(n):
list1.app

元記事を表示

Azure Functions Python Programming v2 で Blob Storage Trigger (w/ Event Grid) を使う!

# 本記事について

Azure Functions で Python のコードを動かすには、現在 Programming Model が v1 と v2 の2種類があります。

https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-reference-python?tabs=asgi%2Capplication-level&pivots=python-mode-decorators

この記事では、v2 モデルのほうで、Blob Storage Trigger を利用する際に、より高速で高信頼な Event Grid を経由させてトリガーさせるときの設定を見ていきます。

https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-reference-python?tabs=asgi%2Capplication-level&pivots=python-mode-decorators

https://learn.microsoft.co

元記事を表示

時系列データ解析 基本

# 時系列データの解析方法
### 定常性とは
#### 時系列データの特性である平均、分散、自己相関がどこの時間でも一定であることを言います。
#### ・平均がどこの時間でも一定:
時間とともに平均が変化しないことであり、ある時点の平均が違う時点の平均と一緒であること。
#### ・分散がどこの時間でも一定:
分散(データのばらつき)がどこでも、一緒または変化しないことであり、ある時点の分散が時点の平均と一緒であること。
#### ・自己相関がどこの時点でも一定:
2つの時点を比較しても、時間の影響が受けないこと。

### データ読み込みまたはデータ作成
“`python
import pandas as pd
# データ読み込み
df = pd.read_csv(‘file.csv’)
# データ作成
df = pd.DataFrame({
‘日付’: [‘2023-10-11’, ‘2023-10-12’, ‘2023-10-13′,’2023-10-14’, ‘2023-10-15’, ‘2023-10-16’, ‘2023-10-17’],
‘気温(度)

元記事を表示

それ,numpy で書かない?– 1 —

## それ,numpy で書かない?

Python ではリストがよく使われる。また,for ループが遅いのでリストに特化したリスト内包表記も推奨されることが多い。

それなりの根拠があるからではあるが…

課題:$n$ 個の整数を要素とするリストが 2 対ある。対応する要素が等しいものと等しくないものの個数を求めよ。

テストデータとして以下のような,0 ~ 999 の整数要素からなる,2 個のリストを作る。

“`python
from time import time
import random
n = 10000000
random.seed(123)
expected = [random.randint(0, 999) for _ in range(n)]
predicted = [random.randint(0, 999) for _ in range(n)]
“`

for を使うとたしかに遅い。

“`python
s = time()
correct = 0.0
wrong = 0.0
for i in range(n):
if expecte

元記事を表示

Pythonの__init__.py

## 対象の読者
この記事は、Pythonのパッケージ管理について学びたいと思っているPython初心者や中級者を対象としています。特に、\_\_init_\_.pyファイルの役割と使い方について詳しく解説します。

## \_\_init\_\_.pyとは?
Pythonでは、ディレクトリをパッケージとして扱うためには、そのディレクトリに\__init__.pyファイルを含める必要があります。このファイルがあることで、そのディレクトリ内のPythonモジュールやサブパッケージへのアクセスが可能になります。

## 役割
\_\_init\_\_.pyファイルは以下のような役割を果たします。

– パッケージの識別
\_\_init_\_.pyファイルがあるディレクトリはPythonパッケージとして認識されます。これにより、そのディレクトリ内のPythonモジュールやサブパッケージへのアクセスが可能になります。
– 初期化コードの配置
\_\_init\_\_.pyファイルは通常は空ですが、必要に応じて初期化コードを記述することができます。これは、パッケージのセットアップや設定を行うの

元記事を表示

“「0.1+0.2≠0.3」だから浮動小数点数を扱うときには気を付けましょう” はいいんだけど結局どうしたらいいのかまでフォローしたほうが親切だと思ったので調べてみた

# 釣られた

https://qiita.com/higashi_nc/items/9a5ea00415a008f06843 に釣られて読みました。

2行でまとめると以下のような内容です。

1. 10進数の0.1や0.2は浮動小数点数で表すとピッタリ0.1や0.2にはならずに誤差が出る
2. 浮動小数点数の扱いを理解して、より堅牢なプログラムを作成することを願っています。

え?結局どうしたらいいの?という感想だけ残ったので各言語での浮動小数点数同士の比較の方法を ChatGPT に教えてもらいました。

# 結局どうしたらいいのか

基本的に浮動小数点数同士の差がある程度の誤差より小さければ同じ数である、という判定をすればいいようです。
今回の回答には含まれませんでしたが、おそらく言語によっては浮動小数点数同士の比較をする専用のライブラリなどもあるかと思われます。

## Python

“`python
import math

a = 0.1
b = 0.2

if math.isclose(a + b, 0.3, rel_tol=1e-5):
print(“等し

元記事を表示

dotenv を使って環境変数を設定

# 初めに

git を使用している関係上、API キーや DB のURLを直書きしてしまうと、push 時に取り消される (あたりまえ) ため、最近は環境変数ファイルを用意しています。

普段であれば、Docker を立ち上げる際に指定するのですが、作業環境で流動的に env ファイルを使いたいなんてこともあります (openai API key とか)。

なので今回は、dotenv を利用して、環境変数を指定することにしました。

公式 git

https://pypi.org/project/python-dotenv/

# 結論

`python-dotenv` はインストール済みとする

“`python:main.py
from dotenv import load_dotenv
from os.path import join, dirname, abspath

dir_path = dirname(abspath(“__file__”))
dotenv_path = join(dir_path, ‘.env’)
load_dotenv(dotenv_path

元記事を表示

【Python】`pywinauto`の”Simple Example”は日本語環境だと動かない

## はじめに

PythonのRPA用ライブラリ、[`pywinauto`](https://github.com/pywinauto/pywinauto)は非常に便利なライブラリであり、WindowsのGUI操作に強力な機能があります。

https://github.com/pywinauto/pywinauto

しかし、そのドキュメントは日本語で十分に充実しているとは言えず、GitHubの`README.md`にある”Simple Example”は日本語環境では動きません。
これがなぜ動かないかをエラーメッセージやソースコードから見抜くのは非常に困難なので、技術選定の段階で挫折しているプロジェクトが多いのではと考えています。
この記事では、「とりあえず”Simple Example”と同等物を動かせるようにする」ことを目標に解説していきます。

## “Simple Example”実行時のエラー

“Simple Example”のコードは、下記のようにシンプルです。
“`py
from pywinauto.application import Application

元記事を表示

Discord.pyでスラッシュコマンドリセットする

## 問題
古いスラッシュコマンドがDiscord上のサジェストで出てきてしまい邪魔になる。
これらをリセットしたい

## 解決方法
以下のソースを実行する
botが起動し次第がコマンドのリセット処理が走る。
“`python
import discord
from discord.ext import commands

intents = discord.Intents.all()
bot = commands.Bot(command_prefix=”!”, intents=intents, help_command=None)

# bot起動時
@bot.event
async def on_ready():
bot.tree.clear_commands(guild=None)
await bot.tree.sync(guild=None)

bot.run(“ここにbotのトークンを書く”)

“`

## これだけで解決しない場合
対象のbotをサーバーからキックして招待し直す

元記事を表示

【Python】あれ? dnnモジュールのONNX推論速くねえ?いや、やっぱ遅えかも。。。 ※2023/12/05時点

:::note info
この記事はOpenCV Advent Calendar 2023の6日目の記事です。
:::

2021年のAdvent Calendarで以下のような投稿をしました。
この投稿は、ある意味続編です🦔

https://qiita.com/Kazuhito/items/beaf01bf47893805cc03

# 結論
速、、、いや、やっぱ遅いかも([ONNXランタイム](https://github.com/microsoft/onnxruntime)と比較して)
※1:CPU推論
※2:モデルによっては速い

# バージョン
以下のバージョンで確認しました。

“`bash
pip show opencv-python

Name: opencv-python
Version: 4.8.1.78
(省略)
“`

“`bash
pip show onnxruntime

Name: onnxruntime
Version: 1.16.3
(省略)
“`

# 計測環境
Google Colaboratory上でCPU推論を行い「%%time」や「

元記事を表示

ChatGPTとPythonで学ぶ 深層強化学習

皆さんこんにちは。今日も引き続きChatGPT先生をお迎えして、「ChatGPTとPythonで学ぶ 深層強化学習」というテーマで雑談したいと思います。それではChatGPT先生、よろしくお願いします。

### **assistant**:

もちろん、よろこんでお助けしますよ。先ず、深層強化学習(Deep Reinforcement Learning)について簡単に説明しましょう。

深層強化学習は全体的な深層学習の進歩とともに注視が高まってきました、特にAlphaGoによる囲碁で世界チャンピオン選手を破ったことによります。基本的に深層強化学習は強化学習の手法を深層学習アーキテクチャに適用したものです。

深層学習は特徴抽出や自己学習を自動化するための装置であり、これによってアルゴリズムは自身で重要な特徴やパターンをデータから学習することが可能になりました。これに対し、強化学習はエージェントが環境を触りながら最適な行動を学習するためのアルゴリズムを提供します。

したがって、これらを組み合わせると、エージェントは複雑な環境から最適な行動を自動で学習することが可能となり

元記事を表示

【Python】ランダムだけどランダムじゃない

# はじめに
 SSDのFlash Translation Layer (FTL)の研究者は、1年に1回はFTLのシミュレータをいちから作る人種です(言い過ぎ)。

 そんな感じで、PythonでSSDのFTLのシミュレータを実装していた時の話です。SSDの容量全体(LBA領域全体)に対する4 KBランダムライトコマンドを発生させてそのシミュレータに入力して挙動を確かめていました。

 ランダムライトですので疑似乱数系列生成ライブラリを使用してコマンドの先頭LBAを生成していたのですが、どうも挙動が期待と異なるので調べたところ、生成された系列が私の期待する「ランダム系列」ではありませんでした。

 結論から言うと私の勘違い(仕様を確認せずに実装したこと)が原因なのですが、自分の備忘録を兼ねて記事として残します。

# まとめ
* Pythonの`random.randrange(min, max)`の連続実行は「取り出した値を袋の中に戻してまた袋から値を取り出す」動作になり「minからmaxまで重複せずにランダムに取り出す」動作にはならない
* 「minからmaxまで重複せずにラ

元記事を表示

urllib.request.urlopenはエラーメッセージを捨てる

## バージョン
Python 3.11.6

## 何が起きたか

外部モジュールを使わずに[**Notion API**](https://developers.notion.com/reference/intro)を叩こうと以下のようなコードを書いていました。

“`python:分かりやすくしてます.py
from json import dumps, loads
from urllib import request

endpoint = “https://api.notion.com/v1/pages/**”
headers = {
“Authorization”: “Bearer **”,
“Notion-Version”: “2022-06-28”,
“Content-Type”: “application/json”,
}
payload = {
“properties”: {
“リリース日”: {
“date”: {
“start”: “2023-12-01”

元記事を表示

Azure AI Searchを使ってベクトル検索を実行してみた(Python)

## はじめに
この記事は株式会社ナレッジコミュニケーションが運営する [クラウド AI by ナレコム Advent Calendar 2023](https://qiita.com/advent-calendar/2023/knowcom-cloudai) の6日目にあたる記事になります!

Azure AI Searchを使って、Pythonでベクトル検索を実行してみました。Azure AI Searchを使ったベクトル検索を試したい方におすすめです。

## 開発環境
– Azure サブスクリプション
– Azure AI Search
– Python 3.11

## 実装
### Azure AI Searchリソースの作成
[Azure Portal](https://portal.azure.com/)から「AI Search」のページに移動し、「作成」を選択します。

入力項目を埋め、「確認および作成」を選択します。

![記事投稿用 (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

OTHERカテゴリの最新記事