Python関連のことを調べてみた2023年11月05日

Python関連のことを調べてみた2023年11月05日

Python3.8 から 3.10にあげたらpipコマンド使えなくなったんだが

## 経緯
– 環境をPython3.8 -> 3.10に
– アプリ開発で専用のapiを使うため、githubからパッケージのインストールするときに問題が起きた
“`
$ python3 -V
Python 3.10.13
“`

## 環境
– Ubuntu20.04 + Django4.2.7 (Python 3.10.13)

## エラー及び解決法➀
– pipコマンドたたいた時のエラー
“`
Traceback (most recent call last):
File “/home/zombie/honkaistarrail/starrail_scraping/bin/pip”, line 5, in
from pip._internal.cli.main import main
ModuleNotFoundError: No module named ‘pip’
“`

– 解決
“`
$ sudo apt install python3-pip
“`

## エラー及び解決法➁
– 再度、たたく。
“`
$ python3.

元記事を表示

pythonとmediapipeを用いた座った姿勢における肩と腰の角度の検出

### pythonとmediapipeを用いて肩と腰の角度を取得
現在、腰痛の改善を目的に座った姿勢が腰に良い姿勢か否かを判定するプログラムを作成しています。
今回は肩と腰の角度をpythonとmediapipeを用いて取得することができました。
まだ、試作の段階なのでコードの説明は省かせていただきます。

課題として、角度を求めるだけでは良い姿勢か悪い姿勢かを判定することができません。今後は、AIを用いて簡単に判定できるプログラムを作成していきます。

“`python:get_shoulder_hip.py

import cv2
import os
import numpy as np
import mediapipe as mp
import math

#体の部位の座標(x,y,z)と部位の可視性(v)を取得
def get_coordinate(landmark_num):
parts_array = {“x”:0, “y”:0, “z”:0,”v”:0}
parts_array[“x”] = results.pose_landmarks.landma

元記事を表示

python3.8 から3.10 に切り替える方法

## 経緯
アプリ開発をしようと思ったときに、下記のようなエラーが発出
“`
ERROR: Package ‘mihomo-1.1.7’ requires a different Python: 3.8.10 not in ‘>=3.10’
“`

## 環境
Ubuntu20.04 + Django4.2.7

## 対処法
– まずPython3.10をインストール
“`
sudo apt install python3.10
“`

– 一応確認
“`
$ ls /usr/bin/ | grep python
dh_python2
python
python2
python2.7
python3
python3-config
python3.10
python3.10-config
python3.8
python3.8-config
python3.9
x86_64-linux-gnu-python3-config
x86_64-linux-gnu-python3.10-config
x86_64-linux-gnu-python3.8-config
“`

– バ

元記事を表示

Pythonで「書式化演算子%を使った文字列の書式設定(printf形式の書式化)」の動作を確認してみた

# 概要

Pythonで「書式化演算子%を使った文字列の書式設定(printf形式の書式化)」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/python/string/index23.html

# 実装

以下のファイルを作成しました。
“`sample.py
num1 = 30
result = “10進数では %d 、16進数では %x です” % (num1, num1)
print(result)

def mypoint(str1, num1):
result = “My name is %-10s, point is %5d.” % (str1, num1)
print(result)

mypoint(“Yamada”, 75)
mypoint(“Sugiyama”,1825)

name = “Suzuki”
old = 18
print(“名前は%-8sです。年齢は%03d歳です。” % (name, old))

print(“10進数=%d, 16進数=%x” % (20, 20

元記事を表示

ChatGPTとPythonで学ぶ OPTICS クラスタリング

皆さんこんにちは。今日も引き続きChatGPT先生をお迎えして、「ChatGPTとPythonで学ぶ OPTICS クラスタリング」というテーマで雑談したいと思います。それではChatGPT先生、よろしくお願いします。

### **assistant**:

よろしくお願いします。今日はOPTICSというクラスタリング法について学びます。

OPTICS(Ordering Points To Identify The Clustering Structure)は、データ分析の一環としてよく使用されるクラスタリングの手法の一つです。クラスタリングとは、データを自然なグループに分割する教師なし学習の一種です。

OPTICSはDBSCANと同じく密度ベースのクラスタリングを行いますが、DBSCANが一定の密度しか扱えなかったのに対して、OPTICSは可変の密度も扱うことができます。

それではPythonのscikit-learnライブラリを使用して、OPTICSクラスタリングを試してみましょう。まずは必要なライブラリーをインポートします。

“`python
impo

元記事を表示

ABC327回答メモ

# 0.はじめに
 C問題までは順調に解けましたが、Dの壁を越せず
 結果はレート微減でした。
 でも、レートがピッタリ700になったのでなんかうれしい感じでした。

# 1.A – ab
 Aらしい肩慣らし問題でした。

 フラグ変数を0で初期化し、文字列を2文字目から見ていく。
 一文字前と現在の文字が、abかbaの組み合わせだったら
 フラグに1をセット
 最後にフラグが1だったらYes、0だったらNoを出力して終了。

 https://atcoder.jp/contests/abc327/submissions/47210843

# 2.B – A^A
 最初は素因数分解めんどいなーと思いましたが、
 入力例とBの最大値を見て、A=10で10の10乗まで行くなら
 受験を満たすAの数はそれほど大きくないなと気づきました。
 Bの値を試算していき、A=17で制限である10の18乗を
 超えることが分かったので、あとは、i=1から16までループして
 入力のBとiのi乗が一致したらYes、i=16を超えても一致しなかったらNoを
 出力して終了。

 https://

元記事を表示

[python]LINE Messaging API + requests で メッセージを送信する

# はじめに
LINE Messaging APIを使うと、Botからユーザーへ様々な形式でメッセージを送ることができます。
LINE公式アカウントなどを使っていても、単なるテキストや画像、スタンプ以外にも『はい』『いいえ』で答えるボタンが付いたメッセージや、横にスクロールできるタイプのメッセージもあります。
メッセージの送信対象も選択することができ、1対1での送信や、一斉送信、属性で限定して送信などの方法があります。
今回はrequestsを使ってLINE Messaging APIを介してメッセージを送信する方法を簡単にまとめます。

# requestsでのメッセージ送信方法

Botの作成、トークン等の取得はこちらで解説していますので参照下さい。

https://qiita.com/NaruNeko/items/482ed8dadc919d85f658

試しにプッシュメッセージを送るプログラムを実装してみます。
> **プッシュメッセージ**
ユーザー、グループトーク、または複数人トークに、任意のタイミングでメッセージを送信するAPIです。

[LINE Developer

元記事を表示

miniforgeでjaxをM1 Macに入れてみた

# はじめに
普段大学の研究ではサーバーのGPU上でpythonのライブラリであるjaxを使っています。jaxは線形代数関連の演算を非常に速く処理することができ便利なので、できればローカルでも使用したかったのですが、Apple Sliconである**M1 Mac**だと今までインストールが上手く行きませんでした。日本語で解説しているサイトがなかったためここでごく簡単にまとめておきます。


# 環境
– OS: macOS Monterey
– チップ: Apple M1
– python: 3.11

# インストール方法
インストール方法で大事なことはただ一つ、[**miniforge**](https://github.com/conda-forge/miniforge)でパッケージをインストールするということでした。非常に簡単なのですが、明記されているWebサイトが少なく気づくまで苦労しました。[こちらのstack overflow](https://stackoverflow.com/questions/70815864/how-to-insta

元記事を表示

AtCoder初心者振り返りメモ ABC327

# ABC327の回
# A-問題
https://atcoder.jp/contests/abc327/tasks/abc327_a

**問題文**
英小文字からなる長さ N の文字列 S が与えられます。
S の中で a と b が隣接する箇所があれば Yes を、なければ No を出力してください。(a と b の順序は問いません。)

**ポイント**
ab の並びとba の並びの両方を判定するロジックが必要

““Python:A.py
N = int(input())
S = str(input())

for i in range(N-1):
# 並びが ab の場合
if S[i] == ‘a’ and S[i+1] == ‘b’:
print(“Yes”)
exit()
# 並びが ba の場合
elif S[i] == ‘b’ and S[i+1] == ‘a’:
print(“Yes”)
exit()

print(“No”)

#【別解】文字列Sの中に “ab”

元記事を表示

DebianにpyenvとMinicondaをインストールし、仮想環境を作る

# pyenvをインストールする
“`
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
“`
# pyenvの環境変数を追加する
“`
$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bashrc
$ echo ‘command -v pyenv >/dev/null || export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bashrc
$ echo ‘eval “$(pyenv init -)”‘ >> ~/.bashrc
$ source ~/.bashrc
“`

# minicondaをインストールする
“`
$ pyenv install miniconda3-4.7.12
$ pyenv global miniconda3-4.7.12
$ conda init bash
$ source .bashrc
“`

# 仮想環境を作る
“`
$ conda create -n entry_env python=3.1

元記事を表示

【数学こぼれ話】【Token】「何も起こってない」ディフォルト状態としての正規分布

観測原点(Oo=Observation origin)0と観測極限(Ol=Observation limit)$\tilde{∞}$を両端とするユークリッド幾何学的実数直線l、およその任意の位置に存在する観測点(Op=Observation point)pから出発する。なお$\tilde{∞}$は「符号なし無限遠点(Unsigned Infinity)」を意味するものとする。
![スクリーンショット 2023-10-20 7.21.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/5979894a-4c3e-0fa5-00d0-dcdd3f031157.png)
[【数理溢れ話】【Token】実数概念の代用品としての「連続有理数集合」](https://qiita.com/ochimusha01/items/6c0291a29b781167ab99)

ここでは観測原点と観測限界の2点の間に横たわる観測点$p_i(0≦i≦\tilde{∞})$の集合に注目しよう。とりあえずまだ距離も角度

元記事を表示

【数学こぼれ話】【Token】トーラス概念

コーシーの積分定理によれば正則関数の積分結果は0になる。ここで問題となるのは上掲図の「三次元における(0→$∞^+$の座標系と0→$∞^-$の座標系の)二重球面状態」。なのでヤコビアンを用いて球の体積を求める時や球表面を経度(±180度)と緯度(±90度)で表す時には「半分」で考える。この様に「任意の偶関数を中心で割って奇関数二つと見做す」操作などが偶奇概念の出発地点の一つとなる。

[Wikipedia「コーシーの積分定理」](https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%BC%E3%82%B7%E3%83%BC%E3%81%AE%E7%A9%8D%E5%88%86%E5%AE%9A%E7%90%86)

“`math
\int_0^{1}\int_0^{2π}\int_0^{π}dx=\begin{vmatrix} \frac{∂x}{∂r} & \frac{∂x}{∂θ} & \frac{∂x}{∂φ}\\ \frac{∂y}{∂r} & \frac{∂y}{∂θ} & \frac{∂y}{∂φ}\\ \frac{∂z}{∂r} &

元記事を表示

[python] 簡単な応答ができるLineBotを作って外部から使えるところまでやってみた(Flask+ngrok)

# はじめに
Line Messaging API, line-bot-sdkを使ってPythonで簡単なLineBotを実装した際の備忘録。
今回はユーザーのチャットへの自動返答、Flaskとngrokを用いたサーバーの実装と公開までをやります。
以前は[Heroku](https://jp.heroku.com/home)を使って実装していましたが、[無料プランの終了](https://blog.heroku.com/next-chapter)に伴い、Flask + ngrokで実装しました。

# 開発環境
– Ubuntu 20.04
– python 3.9.13
– Flask 1.1.2
– line-bot-sdk 3.5.0
– ngrok-v3-stable-linux-amd64

# 大まかな流れ
FlaskとLINEBotSDKでPythonプログラム(main.py)を実装
→ ngrokでローカルサーバーを外部公開
→ Webhookを利用してLINE Messaging APIを介してやり取り

![スクリーンショット 2023-11-05 01573

元記事を表示

Poetry + pyenv + VSCode で FastAPI を利用してみる

## はじめに

以前に自作ホロジュールアプリのバックエンド API を Flask で作成しましたが、リファクタリングするつもりが 1 から作り直してみたくなり、FastAPI を利用してみることにしました。

いまさら感はありますが、Poetry + pyenv + VSCode + FastAPI の手順が見つからなかったというのも試してみたきっかけです。

## FastAPI

[FastAPI](https://fastapi.tiangolo.com/ja/)

> FastAPI は、Pythonの標準である型ヒントに基づいてPython 3.6 以降でAPI を構築するための、モダンで、高速(高パフォーマンス)な、Web フレームワークです。

最も高速な Python フレームワークの一つで、直感的に実装でき、堅牢性も高く、API のオープンスタンダードに基づいているとのことです。

## 開発環境

* Windows 11 22H2
* PowerShell 7.3.9
* Visual Studio Code 1.84

まずは、いつもの pyenv と Po

元記事を表示

ABC327 提出したコードや感想 (言語:Python)

# 記事構成
[1. Atcoder自己紹介](#1-Atcoder自己紹介)
[2. 各問題の感想と提出コード](#2-各問題の感想と提出コード)
[3. 今回の結果想](#3-今回の結果)
[4. 最後に](#4-最後に)

# 1. Atcoder自己紹介
– 茶色?コーダー
– 主な使用言語:Python,C++(C++は最近使ってません)
– 一時期休んでたけど最近再開
– 本コンテスト終了時のグラフ↓

![abc327.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3564785/3726b847-cd9d-1d03-3f03-47f118f36337.png)

# 2. 各問題の感想と提出コード
## A問題
特にいうこと無し.
A問題にしては中身書きすぎた?

“`python:A問題
def c_ab(S):
N = len(S)
for i in range(N – 1):
if (S[i] == ‘a’ and S[i + 1] == ‘b’)

元記事を表示

PyGWalker超入門【Streamlit編】

# PyGWalkerとは

PyGWalkerはPandasのDataFrameをTableau風のGUIで探索・可視化できるPythonライブラリです。
オープンソースソフトウェアとして開発されていてソースコードはGitHubで公開されています。

なお、[README](https://github.com/Kanaries/pygwalker/blob/main/docs/README.ja.md)によると、
> “Pig Walker”のように発音

…だそうです。

## インストール

インストール手順は[公式ドキュメント](https://docs.kanaries.net/ja/pygwalker/installation)に記載されています。

https://docs.kanaries.net/ja/pygwalker/installation

“`raw
pip install pygwalker
“`

自分はAnaconda環境で構築しましたが、Anaconda環境が古すぎて失敗してしまったので、そのアップデートから実施しました。
また

元記事を表示

RealESRGANを独自のデータでトレーニングしてカスタマイズモデルを作る

# RealESRGANが物足りない時に…

RealESRGANは低解像度の画像をアップスケールして、しかもくっきり綺麗にしてくれる強力なモデルです。拡大しても粗いピクセルにならず、なめらかな質感になるようスムージングしてくれます。

【猫の画像を4倍にアップスケール】

![pexels-alena-koval-982300のコピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/01d84f2c-1d89-b8c1-0c63-1581914fc9d4.jpeg)
![pexels-alena-koval-982300のコピー_out (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/ab44c6a2-7a6c-1c5f-c33d-828423a6ae81.jpeg)

しかし、結果を細かく見てみると、スムージングのせいで細部が潰れてしまったり、くっきりしすぎてアーティファクトが

元記事を表示

PythonでYoutubeの動画をダウンロード

# 備忘録

###### pythonでyoutubeの動画をダウンロードするやつ

“`python:main.py
import os
from yt_dlp import YoutubeDL

abs_path = os.path.dirname(__file__)

#オプションを指定(最高画質の動画と最高音質の音声を取り出し結合するためのオプション)
#実行ファイルと同じディレクトリにdataフォルダを作成してください
option = {
‘outtmpl’ : str(abs_path) + ‘/data\original/%(title)s.%(ext)s’,
‘format’ : ‘bestaudio/best’
}

#インスタンスの生成
ydl = YoutubeDL(option)

#ダウンロードの実行
result = ydl.download([‘https://www.youtube.com/watch?v=M2cckDmNLMI&list=PLItoQPoI2CslCLn2RKLEwe1IfgdjF5idU&

元記事を表示

ABC327をPythonで(A~E)

HHKBプログラミングコンテスト2023(AtCoder Beginner Contest 327)

https://atcoder.jp/contests/abc327

# A問題
ab か ba のどちらかが入っているか確認
“`python:A
input()
s = input()
print(“Yes” if “ab” in s or “ba” in s else “No”)
“`
# B問題
答えとなるAの数は少ないので全探索
“`python:B
b = int(input())
a = 1
while a ** a <= b: if a ** a == b: print(a) exit() else: a += 1 print(-1) ``` # C問題 全部がんばって調べる ```python:C a = [list(map(int, input().split())) for _ in range(9)] if any(len(set(a[i])) < 9 for i in range(9

元記事を表示

【備忘録 #3】FastAPIの基本

## ■概要

上記動画を学習したので、
備忘録として残します。

## ■Pythonの型ヒント
下記のように、型情報を記述することができる。
“`python
num: int = 3
def add(a: int, b: int) -> int:
return a+b
“`

リスト、辞書の場合
“`python
from typing import List, Dict

sample_list: List[str] = [“helllo world”, “hogehoge”]
sample_dic: Dict[str, int] = {“hoge”:4}
“`

## ■FastAPI起動
「/」にアクセスした際にindex関数を実行する。
“`main.py
from fastapi import FastAPI

app = FastAPI()

@app.get(“/hello{show_str}”)
async def hello(show_str: str):

元記事を表示

OTHERカテゴリの最新記事