Python3関連のことを調べてみた2023年10月15日

Python3関連のことを調べてみた2023年10月15日

【Python】日本語全角/半角変換ライブラリmojimojiで報告されているIssueと拙作Habachenでの対応について

## はじめに

– mojimoji とは

https://qiita.com/ikuyamada/items/fea6c8f81e7cac7cf318

https://github.com/studio-ousia/mojimoji

– Habachen とは

https://qiita.com/Hizuru/items/6b91d00fbe13ebb43867

https://github.com/Hizuru3/python-habachen

mojimoji と Habachen は、いずれもネイティブ拡張を用いた CPython 上で動作する日本語の全角/半角変換ライブラリです。 Habachen は私が開発しています。

以前書いた [Habachen の紹介記事](https://qiita.com/Hizuru/items/6b91d00fbe13ebb43867)ではそのパフォーマンスに焦点を当てていますが、元々は mojimoji の不満点を解消した CPython 用の日本語文字列変換ライブラリを自前で作り上げることが目的で[^1]、高速化は二の次で

元記事を表示

無相関検定(母相関係数=0の検定)の逆

## 無相関検定(母相関係数=0の検定)の逆

### 無相関検定

無相関検定は,サンプルサイズと標本相関係数を与えて,母相関係数=0 の検定を行い $p$ 値を返す。

“`python
import numpy as np
from scipy.stats import t

def rtest(n, r):
“””
引数
n: サンプルサイズ
r: 標本相関係数
戻り値
検定統計量 t0 と p 値(両側検定)のタプル
“””
t0 = abs(r)*np.sqrt(n – 2)/np.sqrt(1 – r**2)
return (t0, 2*t.sf(t0, n – 2))
“`
サンプルサイズが 10,標本相関係数が 0.5 のときの $p$ 値(両側検定)

“`python
print(rtest(10, 0.5))
“`

(1.6329931618554523, 0.14111328124999997)

### 無相関検定の逆

サンプルサイズと有意

元記事を表示

世にも奇妙な物語: due to a circular import

それは突然明らかになった。

ある日,import pandas as pd をやったときに,エラーメッセージを吐いた。

“`
>>> import pandas as pd
Traceback (most recent call last):
File ““, line 1, in
File “/Users/*****/pandas.py”, line 2, in
print(pandas.__version__)
^^^^^^^^^^^^^^^^^^
AttributeError: partially initialized module ‘pandas’ has no attribute ‘__version__’ (most likely due to a circular import)
“`

どうせ,pip のやり直しで片付くだろうと uninstall して install し直したりしたけど解決しない。しばらく放っておいて,「さてしもあるべからずとて」,エラーメッセージをよくよ

元記事を表示

Locustで負荷テストを行った

# Locustで負荷テストを行った
postmanでは複数同時テストができないためLocustを使用した

# install
“`
pip install locust
“`

# App内にfileを設置
“`
App/Web/views/locust.py
“`

# locust.pyでテストコードを作成
毎秒の時間を出力するコード
“`
from locust import HttpUser, TaskSet, task
import datetime

class Test(TaskSet):
@task
def load(self):
print(datetime.datetime.now())

class Test2(HttpUser):
tasks = {Test:1}
“`

# 出力コマンド
App/Web/views/の階層まで移動し
“`
$locust
“`
を叩くと出力されます。

こちらを流用し個々のテストの出力を行えます。
人数や何秒ごとかなどの詳細な設定も行えますので便利です。

元記事を表示

統計ライブラリ pingouin で多変数パラメトリック検定

## 結論
変数が複数でも、pingouin なら 1 行で簡単にパラメトリック検定ができます。

“`python:HZtest.py
import pingouin as pg

pg.multivariate_normality(data, alpha=0.5)
“`

## 問題
python で統計解析を行いたいとき、SciPy を使うのがメジャーだと思います。
統計解析を行うとき、最初にデータがパラメトリックかノンパラメトリックかをパラメトリック検定で見ることが多いかと思いますが、SciPy ではシャピロウィルク[1, 2]がよく使われます。

“`python:Shapiro.py
from scipy.stats import shapiro

shapiro(data)
“`

この方法だと使えるデータは 1 つであり(恐らく想定しているガウス分布が単一なため)、複数の変数を見たいときには 1 つ 1 つ見ていく必要があります。

## pingouin
以上の問題に対し、pingouin ですと、各変数ごとにガウス分布を想定した手法[3]を使っているため、精

元記事を表示

Python3コマンドが使えない!

# 環境
windows11
# 状況
環境Pathを通して,Pythonが使えるようになったのに,`Python3 -u`で実行しようとしたら使えなかった.
しかし,`Python -u`なら動いた.
# 解決策
まさかの方法でした.`C:\Users\ユーザー名\AppData\Local\Programs\Python\Python310`の中にある`Python.exe`ファイルをコピペして`Python3.exe`に名前を変更することで解決しました.
# 後記
調べてもあまり情報が出てこなくて困りました.ある記事では,「Pythonコマンドを使えばよいではないですか」と書かれていました.確かに,その通りなのですが,Python3コマンドを使いたいかったのです…
どなたかの役に立てばうれしいです.

元記事を表示

boto3でLambdaを実行する時のタイムアウト設定

## この記事で学ぶ事
タイトル通りですが、boto3でLambdaを実行する時のタイムアウト設定についてです。
(Lambdaを実行って表現は正しいのかな、、、)
私はこの情報を知れた事で業務で抱えていた問題が解決できたので誰かのお役に立てばと思っています。

## 解決したい事
boto3でLambdaを実行している処理で原因不明の異常が出ていた。
この異常が出ていればタイムアウトかもって情報じゃなくて申し訳ないです。
自信の状態と照らし合わせてみて下さい。

## 設定方法
“`python3
import boto3
from botocore.config import Config

conf = Config(region_name=”ap-northeast-1″, read_timeout=300, retries={“max_attempts”: 0})
lambda_client = boto3.client(“lambda”, config=conf)
“`
– 設定項目
– リージョンをap-northeast-1
– boto3からLambd

元記事を表示

【pykakasi】pykakasiをpyinstallerでexe化しても使えるようにする

# pykakasi…exe化するとエラーがでる
pythonの状態で動かしているとpykakasiが動くのにexe化するとファイルが見つからない的なエラーが発生して動かなくなる。exe化した状態でも動かせるようにできたので、備忘録として残しておく。

# 原因
エラーが発生する原因はpykakasiが*.dbファイルを読み込んでいるが、そのパスに__name__が使われていることである。下にパスを取得する部分のプログラムを示す。
“`python3:
class Configurations:

data_path = pkg_resources.resource_filename(__name__, “data”)
jisyo_hepburn_hira = “hepburnhira3.db”
jisyo_passport_hira = “passporthira3.db”
jisyo_kunrei_hira = “kunreihira3.db”
jisyo_itaiji = “itaijidict4.db”
jisyo_kanw

元記事を表示

現在ニートを名乗っているフリーター23歳による入茶記事

# ABC233で入茶達成しました!!!
参加数24回での入茶で凡人による入茶記事なので、
僕に似たスペックの人には少しは参考になると思います。

![スクリーンショット 2023-10-09 11.20.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2664972/7a4f4d54-c5b1-0449-294f-f5ccb26ef9dd.png)

# スペック紹介
## 最終学歴: 高校卒
最終学歴は高卒ですが、
大学受験の勉強(私立文系)はかなりしていたので、勉強はそこそこできていました。
センターや模試などでは英語7割,国語7割,世界史8割ぐらいでした。

勉強自体に苦手意識はないです。

## 勉強: 数学はどの程度できた?
高校2年生まで理系だったので1Aに関してはそこそこできましたが,
2B,3に関しては全くできません。
模試(進研模試です)では1Aは6割ぐらいだったと思います。
2Bに関しては記憶がないです。多分5割ぐらい?

# 入茶までにしたこと
### 1.基本的なアル

元記事を表示

【Python】Linterとして選ばれたのは「Ruff」でした

# はじめに
2022年頃まで、Pythonの開発でLinterやFormaterを導入する場合、以下のツールを採用することが多く見受けられていました。

| ツール | 用途 |
| — | — |
| [Flake8](https://flake8.pycqa.org/en/latest/) | Linter |
| [Pylint](https://pylint.readthedocs.io/en/stable/) | Linter |
| [isort](https://pycqa.github.io/isort/) | Import Sorter |
| [Black](https://black.readthedocs.io/en/stable/) | Formatter |

そんな中、これらのツールに対して一石を投じるようなツールが登場しました。それがRuffです。
本稿は、そんなRuffを導入する際の足がかりとして参考になれば幸いです。

# Ruffについて
Rustで書かれた非常に高速なPythonのLinterです。

https://astral.sh

元記事を表示

競プロ典型 90 問 004 – Cross Sum(★2)

## 競プロ典型 90 問 004 – Cross Sum(★2)

競プロの初めて向けの10問を解いたので、90問をチャレンジ!

★2でもめちゃくちゃ難しいんよな。。。
## 問題

H 行
W 列のマス目があります。
その縦横の合計を出してほしい。

## 説明
縦横の合計を足すのですが、
重複しているところを引くことが必要になります。これを包除原理というらしい。
H行とW列を足しても、重複があるため、(H+W)-1 が成り立つ。

Aは[[1,2,3],[1,2,3],[4,5,6]]みたいなリスト。

前処理として、縦のみ。横のみのリストを作成する。

### zip(*A)
zipは*演算子を使えば展開してくれる。
リストを展開して、各リストの要素を対応するものとして組み合わせる。
各リストの同じインデックス同士が組み合わさるみたい。
→各リストの同じインデックスインデックス同士という事は縦軸で合わさる。
縦の合計ができる。

参考:
https://qiita.com/kubochiro/items/5daedd51654a8155bc06

## ソースコード
`

元記事を表示

python でプライベート変数を扱う

### はじめに
まず前提として、Python では厳密に可視性を制御することはできません。
それを踏まえた上で、Python においてプライベート変数を扱う方法をまとめました。

プライベート変数の定義方法として、以下の二つが存在します。
– _single_leading_underscore
– __double_leading_underscore

以下でそれぞれを詳しく見ていきます。

### _single_leading_underscore
#### 概要
オブジェクト名の先頭に ‘_’ を __1つ__ 付けると、import されなくなります。

以下はアンダースコアを 1 つ付けたものと付けていないオブジェクトを定義したモジュールであり、これらを import できるかを見てみます。

“`Python:module.py
class PublicClass:
def no_underscore_method(self):
return ‘public_class_no_underscore_method’

de

元記事を表示

Stable Diffusion Web UI導入でつまずいたところ

昨今熱いAI業界にて、Stable DiffusionのWebUIがあると聞いたので導入を試みてみたが、詰まったところがあったので記録

# TL;DR
– 初手導入時にPythonバージョンが違うと、入れ直してもダメ
– Pythonインストール後に一から改めて、.bat(Macなら.sh)の実行をやり直す必要がある

# 導入に際して
基本に関してはググれば出てくるのが割愛
自分も見つけた数点の記事を参考に実行していった

やることとしては、基本的には

– Python3.10.6のインストール(済んでいればスキップ)
– 設置用ディレクトリを用意する
– stable-duffusion-webuiの[GitLab](https://github.com/AUTOMATIC1111/stable-diffusion-webui)から `git clone` する
– cloneしたディレクトリのstable-diffusion-webuiディレクトリに入りwebui-user.bat(Macならwebui.sh)ファイルを実行

これだけで完了である(時間はある程度かかる)

元記事を表示

Tello-Console 取得メソッド一覧

# 取得メソッド一覧
 取得メソッドとは、ドローンからステータスを取得できるメソッドです。以下のメソッドは、リクエストされるとドローンに指定されたステータスを要求します。

– [get_flighttime](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_flighttime)
ドローンの飛行時間を取得します
– [get_tof](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_tof)
ドローンの対地高度を取得します
– [get_battery](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_battery)
ドローンのバッテリー残量を取得します
– [get_imu](https://qiita.com/GAI-313/items/eb21809a45154a1b0084#get_imu)
IMUセンサーからドローンの姿勢を取得します

# get_flighttime
 この

元記事を表示

Pythonでdict型(辞書型)のデータをインデント付きの見やすいJSONに変換してprintする

Pythonの改修をしている時に「渡ってきてるdictの要素なんだろうな」と思ってとりあえずprintしたら複雑な階層構造のdictがダーッと1行で出力されて非常に困ってしまったので、見やすく表示する方法を備忘として残しておく。

# 環境
“`
$ python –version
Python 3.12.0
“`

# やり方(実行例)

Pythonを対話モードで起動して以下を実行すれば良い。
“`python
import json

# JSONに変換して出力したいdictをここに定義
target_dict = {‘food’: {‘fruits’: {‘red_fruits’: [‘apple’, ‘strawberry’, ‘cherry’], ‘yellow_fruits’: [‘banana’, ‘pineapple’, ‘lemon’], ‘green_fruits’: [‘kiwi’, ‘grape’, ‘green apple’]}, ‘vegetables’: {‘leafy_greens’: [‘spinach’, ‘lettuce’, ‘kale’

元記事を表示

AtCoder アルゴリズムと数学 009 – Brute Force 2 解答例(Pythonでのbit全探索 / 動的計画法のシンプルなコード例)

[Supership](https://supership.jp/)の名畑です。季節の変わり目が訪れるたび、[TVアニメ てーきゅう](http://te-kyu.com/)の10期は放送されないのだろうかと期待してしまいます。

## はじめに

コードを書きたい気分のときにはよく[AtCoder](https://atcoder.jp/)を利用させてもらっています。

AtCoderでは、競技プログラミングの世界で有名な[E869120](https://twitter.com/e869120)さんが執筆されました書籍「[問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本](https://gihyo.jp/book/2022/978-4-297-12521-9)」の[演習問題集](https://atcoder.jp/contests/math-and-algorithm)が公開されていまして、それをたまに解いています。

そのうちの1問について、解法を残しておきたくなりましたので、残します。
[bit全探索](https://www.ktpc.tokyo/le/

元記事を表示

【pytest】 pytest において mock を生成する方法

### 概要
mock の生成方法が複数存在し、複雑だったので整理した。

### mockとは
mock を知らない人のために簡単に説明を。

– テストにおける mock とは、テストに必要なオブジェクトを代替するもの。
– mock を使用することで、オブジェクトの属性や戻り値を自由に設定できる
– DB から値を取得する必要のあるメソッドをテストしたい時などに重宝する

### mock を生成する方法
1. unittest.mocker.patch を使用する
– 以下のいずれかの方法で指定したオブジェクトを mock 化できる
– @patch() アノテーションを使用する
– patch() メソッドを使用する
– with 文で生成可能

– 以下の例では os.getcwd() メソッドの戻り値を固定している

“`python
import os
from unittest.mock import patch
class Tes

元記事を表示

PytorchのResNetの出力のクラス数を変更する

# ResNetの出力クラス数を変更したい
有名なResNetですが、Pytorchで簡単に使うことができます。しかし、出力次元数を変えるのに少し調べる必要があったので、備忘録としてまとめておきます。

# PytorchのResNetのドキュメントを確認する
多くの人がPytorchのResNetの[ドキュメント](https://pytorch.org/hub/pytorch_vision_resnet/)を確認すると思いますが、ここには、出力のクラス数を変更できそうな記述がありません。そのため、途方に暮れてしまうわけですが、GitHubの[ソースコード](https://github.com/pytorch/vision/blob/main/torchvision/models/resnet.py)へのリンクがあるので、このソースコードをもとに、ResNetの出力数を変更していきます。

# 出力クラス数を変更したモデルを作成する
上のソースコードを解析した結果以下のコードで、出力クラス数を変更したモデルを作成できました。何か間違いあったら教えてください!!(研究でも使っているの

元記事を表示

AWS Lambda+PythonでExcelファイルにPlantUMLを埋め込む

# はじめに

AWS Lambda+PythonでExcelファイルにPlantUMLを埋め込もうとして苦戦したのでメモ

手こずったところ
– plantwebを自前でレイヤー作成
– requestsのインポートでエラー
https://qiita.com/HLHHS11/items/c26f1632a141a1dcc7a7

2023/12/4以降AWS CloudShell環境がAmazon Linux 2からAmazon Linux 2023に更新されていく予定なので、この情報は使えなくなる可能性があります

# 準備 – plantwebのレイヤー

### AWS CloudShellでPython3.10環境をビルド

AWS CloudShellでPython3.10環境をビルドします。AWS CloudShellのデフォルトでは3.7です。

OpenSSL 1.1.1をインストール

“`sh:
sudo yum install openssl11 openssl11-devel
“`

Python3.10をインストール

“`sh:
sudo yum

元記事を表示

Visual Studio Codeをインストールしてみました。

Visual Studio Codeは便利な開発・実行環境です。
pythonとも相性がよくPATHの参照、コマンドプロンプトとの連携、デバック等
総合的に便利そうです。

https://kino-code.com/what-is-visual-studio-code/

インストールは簡単です。

1.下のリンクをクリックしてダウンロード・インストールをします。
https://code.visualstudio.com/

2.日本語化
  view>Command Paletteを選択します。
  ![無題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571777/06e51846-e44c-737e-0fe9-720ac8d98c90.jpeg)
  >configure display languagew入力します
![無題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3571777/75a3893e-

元記事を表示

OTHERカテゴリの最新記事