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

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

poetry runに失敗したときに

# はじめに
AIに関連して今まで学習していなかったpythonに手を出したのですが、まだ文法とかを学習しているだけで、ツールなどの使い方が良く分かっていません。
そのため、いろいろなチュートリアルなどで実行したものの、エラーになって進めないということが何度かありました。
今回はその中の一つについて、自分が対応できたものをメモとして書いておきます。
きっと後で見直すと、「なんてところで躓いてるんだ・・・」となりそうな気がしますがメモとして投稿しておきます。

# poetry run app でエラーになった
こんなエラーです

“`cmd
$ poetry run app
Traceback (most recent call last):
File ““, line 1, in
File “/usr/lib/python3.10/importlib/__init__.py”, line 126, in import_module
return _bootstrap._gcd_import(name[level:], package

元記事を表示

line-bot-sdk-python v3 で位置情報メッセージの送受信がうまく行かない!

## はじめに
`line-bot-sdk-python` が `version3` になってからのドキュメントや記事などが少なく、ユーザが送信した位置情報メッセージのハンドリングに詰まったので解決策を共有します。

## 環境
– Python3.11
– line-bot-sdk 3.9.0
– Flask 2.3.3

## 発生したこと
`Flask`を利用してLINE Botを作成する際に,ユーザから送信されたメッセージの種類によって処理を変えたい場合, `@handler.add` を利用するが,LINE Bot SDKがv3よりも前の方法だとうまくできませんでした.

## 解決した方法
ドキュメントなどに記載がなかったので `line-bot-sdk` のGithubをたどりました.

https://github.com/line/line-bot-sdk-python/tree/master

その結果, `LocationAction`と`LocationMessageContent`が従来とは異なる場所に配置されてました.
以下,修正した`import`方法を共

元記事を表示

OpenVINO™ 生成 AI API を使用して数行のコードで高速な生成 AI アプリを作成する方法

この記事は、Medium に公開されている「How to Build Faster GenAI Apps with Fewer Lines of Code using OpenVINO™ GenAI API」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。

https://medium.com/openvino-toolkit/how-to-build-faster-genai-apps-with-fewer-lines-of-code-using-openvino-genai-api-5dd5fcabea17

この記事の PDF 版は下記からご利用になれます。
https://www.isus.jp/wp-content/uploads/pdf/openvino_29_how-to-build-faster-genai-apps-using-openvino-genai-api.pdf

「新しい OpenVINO™ 生成 AI API は、開発者に、シンプルで理解しやすいコードを提供します。OpenVINO™ は、コ

元記事を表示

2つの日付の差分を求めるプログラム

“`dt.py
#!/usr/bin/python3
#
# 2つの日付の差分を求めるスクリプト
#
#Usage: python3 dt.py
#

import datetime
def main():
s1,s2=input(“Input YYY1/M1/D1 YYY2/M2/D2:”).split()
y1,m1,d1=(int(x) for x in s1.split(‘/’))
y2,m2,d2=(int(x) for x in s2.split(‘/’))
dt1 = datetime.datetime(y1, m1, d1)
print(dt1)
dt2 = datetime.datetime(y2, m2, d2)
print(dt2)
td = dt2 – dt1
print(td)
return

if __name__==”__main__”:
main()
exit(0)

“`

元記事を表示

Pythonの内蔵関数を活用した高速な文字列操作

## はじめに
Pythonでは、文字列操作に関する内蔵関数が多数用意されています。これらの内蔵関数を活用することで、文字列操作の高速化やメモリの節約を図ることができます。本記事では、代表的な内蔵関数を紹介し、それらを使った高速な文字列操作の方法を解説します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/4ba555f5-9167-85b0-89ac-396381fc6b5d.png)

### 1. `join()`を使った文字列の結合

文字列の結合には、通常は`+`演算子を使うことが一般的です。しかし、大量の文字列を結合する場合は、`join()`内蔵関数を使う方がはるかに高速です。以下は、`join()`を使った文字列の結合の例です。

“`python
# `+`演算子を使った場合
list1 = [‘a’, ‘b’, ‘c’]
result1 = ”
for item in list1:
result1 += item

# `join()`を

元記事を表示

ポテトチップスの方程式

# はじめに
ポテトチップス(以下ポテチ)は、面白い形をしている。それは、上から見ると楕円形であり、横からだと双曲線に見える。そこで、今回はそのような摩訶不思議な形をしているポテチを3次元的にモデル化して以下のようなグラフにしてみることを目的とする。
![potechi_wire.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/78cfab14-4a3a-0b25-1fea-c5931fdde274.png)

# ポテチの方程式
早速だが、上記のようなポテチを描くための方程式は以下のように表すことができる。

“`math
\begin{equation}
\left\{ \,
\begin{aligned}
& \frac{x^2}{a^2}+\frac{y^2}{b^2}<1 \\ & z = \frac{x^2}{a^2}-\frac{y^2}{b^2} \\ \end{aligned} \right. \end{equation} ``` た

元記事を表示

FTTransformerでテーブルデータをTransformerで2値分類

今回はテーブルデータから2値分類をするTransformerモデルを実装します。
使用するモデルはFTTransformerです。

# 実行環境
– WSL2
– CUDA 12.1.0
– Python 3.9.14
– pytorch 2.4.0+cu121

# ライブラリのインストール

“`bash
pip install rtdl_revisiting_models tqdm sklearn numpy matplotlib
“`

# 実行コード

– 学習の設定

“`python
# GPUを使用
device = torch.device(‘cuda’)
# epoch数
n_epochs = 5
# batchサイズ
batch_size = 32
“`

– データの準備

今回はMNISTを使います。(訓練データを小さくして学習時間を短くしています。)

“`python
#訓練データ
train_dataset = torchvision.datasets.MNIST(
root=’./data’,
train=True,

元記事を表示

typing.NoReturn以降のコードをmypyは到達不可と判断

typing.NoReturnを返す関数以降のコードをmypyは到達不可と判断するようです。

しらなかった。

NoReturnは`raise Exception`に対する戻り値とする、と記事で読みました。

なので、そうしていました。

ただ、誤りは、別の型を返すにもかかわらず、`->NoReturn`とNoReturnしか返さないとしてしまうと、mypyが呼び出し元の関数以降に到達しない、とerrorを表示する。この意図がわからなかったので、簡易ながらメモ残します。

“`python
def main():

my_no_return():
# 以降のコードをmypy/Pycharmの「問題」は到達不能と判断下し、解析しない

def my_no_return(clause:bool)->NoReturn: #ここはException以外もあるため` NoReturn|None`とするのが正解
if clause:
raise Exception(“hogehoge”)
“`

元記事を表示

続。きれいだな。花火を見るゲーム。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/79d6c37e-284b-0e35-3f9d-a0256fb68ce8.png)

#### 前回のあらすじ。

https://qiita.com/tetsutakamurata76/items/ecfdfaa7640d3d15e5c8

楕円形の確率分布を持つガウシアン爆発の2次元シミュレーションを行い、5つのタイムステップでその結果をプロットを以下に示します。NumPyを使用して乱数を生成し、Matplotlibでプロットを行います。

パーティクルの飛び散る図。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/c4405a8c-6229-a433-f77b-f86ebb1f1a2b.png)

圧力分布を楕円形のガウス分布に基づいてプロットを以下に示します。圧力は、パーティクルの密度を基に

元記事を表示

Open3D便利帳

自分用
順次更新

## 点群データの初期化
“`python
import open3d as o3d
pcd = o3d.geometry.PointCloud()
“`

## 可視化
クラスにしておくと便利

“`python
class VISUALIZE():

pc = o3d.geometry.PointCloud()

def __init__(self, pc):
# ウィンドウの作成
self.vis = o3d.visualization.Visualizer()
self.vis.create_window()
self.vis.clear_geometries()

# 座標軸の作成と描画
coordinate_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=500, origin=[0, 0, 0])
self.vis.add_geomet

元記事を表示

【Python】Fletでログ出力エリアを作る

### はじめに
もともとコンソールでログを出力していた部分をGUIでもログエリアを作って出力できるようにしたい…と思っていたところ、つまづいたところと対処法をメモしておきます。

### テキストフィールドで実装してみる
FletはTextFieldというコントロールがあり、これで単一行の入力エリアから複数行のエリアまで自由に作ることができます。

https://flet.dev/docs/controls/textfield

ただ調べてみると、こちらにログを出力するように作った場合、自動で最下部にスクロールするというオプションなどは存在しませんでした。

### リストビューで実装してみる
ListViewはその名の通りリストを表示するために使われます。こちらはauto_scrollというオプションがついており、Trueにしておくと更新があった場合は自動で最下部にスクロールされます。

https://flet.dev/docs/controls/listview

~~~python
#ログ出力用のリストビューを作成
log = ft.ListView(expand=1, s

元記事を表示

wslでmanim その6

# 概要
wslでmanimやってみた。
manim見つけたので、やってみた。

# 参考にしたページ

https://qiita.com/Sugimoto_Yuuki/items/6ca0b358420d0e54edb2

# サンプルコード

“`
from manim import *
from collections import deque

class TableBFS(Scene):
def construct(self):
m, n = map(int, input().split())
g = [list(map(int, input().split())) for _ in range(n)]
table = MathTable([[str(cell) for cell in row] for row in g], include_outer_lines = True).scale(0.8)
self.play(Create(table))
self.wait(1)
cnt_text = Text(“Count: 0”).next_t

元記事を表示

wslでmanim その5

# 概要
wslでmanimやってみた。
manim見つけたので、やってみた。

# 参考にしたページ

https://qiita.com/phlogis/items/8c1399ceb346eb50b30b

# サンプルコード

“`
from manim import *

class RiemanIntegral(Scene):
def construct(self):
axes = Axes(x_range = [-0.5, 5], x_length = 8, y_range = [-0.5, 10], y_length = 7).add_coordinates()
axes_labels = axes.get_axis_labels(MathTex(“t”).scale(1), MathTex(“v”).scale(1))
graph = axes.plot(lambda x: 0.4 * (x – 1) * (x – 3) * (x – 4) + 6, x_range = [-0.5, 5], color = YELLOW)
graph_label

元記事を表示

wslでmanim その4

# 概要
wslでmanimやってみた。
manim見つけたので、やってみた。

# 参考にしたページ

https://qiita.com/ymgc3/items/0b6179638a7166025c2f

# サンプルコード

“`
from manim import *

class OpeningManim(Scene):
def construct(self):
title = Tex(r”This is some \LaTeX”)
basel = MathTex(r”\sum_{n=1}^\infty \frac{1}{n^2} = \frac{\pi^2}{6}”)
VGroup(title, basel).arrange(DOWN)
self.play(Write(title), FadeIn(basel, shift = DOWN),)
self.wait()
transform_title = Tex(“That was a transform”)
transform_title.to_corner(UP + LEFT)
self

元記事を表示

Python set型で重複排除!データ処理の効率が飛躍的にアップする方法

## はじめに

こんにちは!今回は、Pythonのset型を使ってデータ処理の効率を劇的に向上させる方法について解説します。大量のデータを扱う際に重複を排除することは非常に重要ですが、set型を使えば簡単かつ高速に実現できるんです。

## set型とは?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/b8ce0d0f-74ea-1141-4fad-b2b7a57320a9.png)

set型は、Pythonの組み込みデータ型の1つで、重複のない要素の集合を表現します。数学の集合と同じ概念ですね。以下のような特徴があります:

– 重複する要素は自動的に排除される
– 順序は保持されない
– ミュータブル(変更可能)

## set型の基本的な使い方

“`python
# set型の作成
fruits = {“apple”, “banana”, “orange”, “apple”}
print(fruits) # 出力: {‘orange’, ‘banana

元記事を表示

Python リストのスライス記法マスター術:負のステップ数で逆順操作も簡単

## はじめに

こんにちは!今回は、Pythonのリストスライス記法について、特に負のステップ数を使った逆順操作に焦点を当てて解説します。この記事を読むことで、リストの操作がより柔軟かつ効率的になること間違いなしです!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/63475380-c26e-d4ec-bc61-875ec5e4742c.png)

## 目次
1. スライス記法の基本
2. 負のステップ数の使い方
3. 実践的な例
4. 公式ドキュメントと追加リソース
5. まとめ

## 1. スライス記法の基本

まずは、スライス記法の基本を復習しましょう。

“`python
my_list[start:end:step]
“`

– `start`: スライスの開始インデックス(省略可)
– `end`: スライスの終了インデックス(省略可)
– `step`: ステップ数(省略可、デフォルトは1)

例えば:

“`python
numbers =

元記事を表示

生成AIのプロンプトを素敵に管理してくれるPythonの標準ライブラリ

# この記事について

ファイルはTOML形式を利用します。
Pythonの標準ライブラリ(tomllib、string)を使った、生成AIのプロンプト管理を紹介します。

# 実施条件

– Python 3.12(3.11以上が必要です)
– ライブラリのインストールは不要です

# 実装の紹介

今回は例として、Anthropicが公開しているプロンプトサンプルを置き換えていきます。

https://docs.anthropic.com/ja/prompt-library/hal-the-humorous-helper

サンプルの中でもやや複雑なプロンプトになります。システムプロンプト、ユーザーとアシスタントのやりとりの往復があってから、質問を投げます。

### 普通にプロンプトを実装すると…

まず、書き変える前の状態を見ていきます。Anthropicのサンプルそのままの状態です。
プロンプトサンプルから、プロンプトの実装部分をあらためて見てみます。

“`python: Anthropicのプロンプトサンプル
client.messages.create(
m

元記事を表示

wslでmanim その3

# 概要
wslでmanimやってみた。
manim見つけたので、やってみた。

# 参考にしたページ

https://qiita.com/phlogis/items/67d354779943721bf4ad

# サンプルコード

“`
from manim import *
import numpy as np

class RightAngleExample(Scene):
def construct(self):
vertex_1 = np.array([-1, -1, 0])
vertex_2 = np.array([-3, -1, 0])
vertex_3 = np.array([-1, 1, 0])
line1 = Line(vertex_1, vertex_2)
line2 = Line(vertex_1, vertex_3)
line3 = Line(vertex_2, vertex_3)
RightTriangle = Polygon(vertex_1, vertex_2, vertex_3, color = RED, fill_

元記事を表示

wslでmanim その2

# 概要
wslでmanimやってみた。
manim見つけたので、やってみた。

# 参考にしたページ

https://qiita.com/ymgc3/items/0b6179638a7166025c2f

# サンプルコード

“`
from manim import *

class SquareToCircle(Scene):
def construct(self):
circle = Circle()
square = Square()
square.flip(RIGHT)
square.rotate(-3 * TAU / 8)
circle.set_fill(PINK, opacity = 0.5)
self.play(Create(square))
self.play(Transform(square, circle))
self.play(FadeOut(square))

“`

# 成果物

![SquareToCircle_ManimCE_v0.18.1.gif](https://qiita-image-store.s3.a

元記事を表示

【合格体験記】Python 3 エンジニア認定データ分析試験

## はじめに
ここ最近のお話ではないのですが、Python 3 エンジニア認定データ分析試験の資格を取得しています。
個人的にとっかかりやすい資格で、使用した教材が非常によかったので共有しようと思います。

## Python 3 エンジニア認定データ分析試験とは
概要は以下となります。

:::note warn
記事投稿時の情報となり、内容が変更される可能性がありますので、受験される際はご自身でもお調べいただくことをおすすめいたします。
:::

| 内容 | 詳細 |
| —- | —- |
| 主催 | 一般社団法人Pythonエンジニア育成推進協会 |
| 試験内容 | ・Pythonのライブラリ (NumPy, pandas, Matplotlib, scikit-learn) を中心に出題
・Pythonのデータ分析、機械学習や、それらに関係する数学の基礎知識も問われる |
| 試験時間 | 60分 |
| 試験形式 | 選択式 |
| 問題数 | 40問 |
| 合格ライン | 70%(28問以上の正解で合格) |
| 受験料金 | 一般: 11,000

元記事を表示

OTHERカテゴリの最新記事