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

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

AWS Lambdaで簡単な運勢占いAPIを作ってみた

最近、AWS Lambdaを使って簡単なAPIを作成する方法を学んだので、アウトプットとして運勢占いAPIを作ってみました。サーバーレスで動作するため、コストを抑えつつ簡易的なAPIを作りたいときに便利です。

## どんなAPIか?
このAPIは、リクエストを送るとランダムに次の情報を返してくれる運勢占いです。

https://bx7pag052e.execute-api.us-east-1.amazonaws.com/default/fotuneFunction

– 今日の運勢: 「大吉」「中吉」「凶」など
– ラッキーカラー: 「赤」「青」「緑」などのランダムな色
– ラッキーアイテム: 「使い古した靴下」「かたつむりの置物」「賞味期限切れの大福」など、ユニークで面白いアイテム

## 使用技術
– AWS Lambda: サーバーレスでPython関数を実行
– API Gateway: Lambda関数をHTTPリクエストで呼び出すためのインターフェース
– Python: ランダムな運勢やアイテムを生成するためのスクリプト

## APIの動作サンプル
実際にAPIを叩

元記事を表示

Difyでyoutubeの字幕を簡単に取得した

## 最近、Difyが楽しい!(2024/10/04)
#### Difyの詳細な情報については、別途調べてもらうとして、今回は私が実際にWindows 11上でWSL2、Docker、Difyをインストールした際に活用させてもらったURLをシェアしたいと思います。(参考にさせていただいた皆様、ありがとうございました!)

#### 良くなったこと
YouTubeTranscriptApiを使うことで、APIの利用制限が無くなり、好きなだけ字幕の取得をできるようになりました。

#### 〇 YouTubeの字幕を取得したい理由
YouTube上にはDifyに関する情報がたくさんありますが、1つ1つの動画を視聴するのは大変ですよね。
せっかくDifyを使うなら、YouTubeの字幕をDifyで取得し、さらにLLMで要約してもらうことで、事前に動画の内容を把握できるはず!と思い、挑戦してみました。

#### 試したこと
数日前までは、以下の手順でYouTubeから字幕を取得していました。
(A) YouTube APIを使って動画を検索し、videoIdを取得
(B) 取得したvide

元記事を表示

画像結合のためのアルゴリズムを考えてみた

## はじめに
撮りたい対象が非常に大きい時、一枚の写真では収まりきらないケースというのはよくあります。そのような時に、複数の写真を結合して一枚の写真にしなければ、画像として視認性が低くなってしまいます。この記事では、そのようなケースに対応するための画像結合のためのアルゴリズムを考え、Pythonで実装してみました。提案アルゴリズムは、「入力画像の共通部分を事前情報なしで検出し、自動的に結合する」ことが可能です。

作成したソースコードについてはGitHubにて公開しています。興味のある方は以下のリンクからご覧ください。

https://github.com/C-Naoki/image-stitcher

## 出力例
以下に、アルゴリズムを用いて結合した出力例を示します。初めに、アルゴリズムに入力する画像の例を添付します。具体的には、以下に示す2枚の画像の結合を行います。画像については、[CIFAR-10データセット](https://www.cs.toronto.edu/~kriz/cifar.html)の中から選択しました。

![](https://raw.githubus

元記事を表示

Pythonスクリプト(帳票出力)をDjangoから実行

## はじめに
弊社が開発・運用・保守している+Auctionでは、pdf帳票生成・メール送信をpythonスクリプトから実行しています
基本的は定期実行なので、cronで運用していますが、スポット的にイレギュラーな場合があり、定期実行から外れることがあります
そういう場合を考慮して、Django Admin(Web)から、実行できるようにしました
帳票生成(メール送信)スクリプトをurlリンクから実行させる、というシンプルな思想です

## 概要

1. ~/project/scriots/bin/create_join_invoice.pyを、~/project/app_name/views.pyにインポートし、CreateJoinInvoiceView()を設定する
1. adminにurlリンクを設定し、CreateJoinInvoiceView()を実行する

## 帳票作成スクリプト
pdfrw、reportlabを使って、pdfを生成しています
他、Taxモデル、os、datetime、settings等importしています

“`scripts/bin/creat

元記事を表示

Docker+AWS Lambda+Python(Flask)で簡単にサーバーレスAPIを実装する

# 🛢️ はじめに
ローカルの Docker 環境で AWS Lambda(Serverless Framework)と Python(Flask)でサーバーレス API を実装,デプロイします.非常に簡単にAPIを実装できるので便利です.皆さんも試してはいかがでしょうか.

# 🛢️ 自己紹介
初めまして.趣味でweb開発を勉強している273*(ツナサンド) / Kei.と申します.関西の大学生です.最近はフルスタック開発やツール制作を行なっています.まだまだ初心者です.

# 🛢️ 完成品
以下のリポジトリにテンプレートを用意しましたので,お好きに使ってください!

https://github.com/273Do/Sls-Python-Docker-TPL

# 🛢️ 実装
### 使用ツール
– [Docker](https://www.docker.com/ja-jp/):PCの中に仮想環境を作れるツール.他のプロセスと遮断できるため環境の差をなくすことができる.
– [AWS Lambda](https://aws.amazon.com/jp/lambda/):AWSが提

元記事を表示

Pythonでなろう系小説をテキストで自動ダウンロードしてみた

会社で暇だったので作った。

めんどくさそうだなと思ったけど、BealtifulSoup4っていうのを使ったら割と簡単に実装できた。

“`python:narou_downloader_bs.py
import os
import requests
from bs4 import BeautifulSoup

BASE_URL = ‘https://ncode.syosetu.com’
# ↓ここを変えてね
DONWLOAD_URL = ‘https://ncode.syosetu.com/n8440fe/’

def fetch_url(url):
ua = ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36’
headers = {‘User-Agent’: ua}
return requests.get(url,headers=header

元記事を表示

総当たりの演算を行列積で書き換える

## 概要

PyTorch で与えた二つのテンソルの距離行列を計算する `torch.cdist` が変な実装になっていると聞いて数学的にどうなっているか調べたら応用の利きそうな方法だったので一般化してみた.

## `torch.cdist`

### `torch.cdist` (`p=2`) の実装

PyTorch の `torch.cdist` は与えられた二つの $n\times d$, $m\times d$ 次元テンソルについて, 以下のように $n \times m$ 通りの総当たりで $d$ 次元空間の $p$ 次ミンコフスキー距離 ($p = 2$ ならユークリッド距離) による距離行列を計算する関数である[^torchcdist]:

[^torchcdist]: 正確にはバッチも加味して $b\times n\times d$, $b\times m\times d$ 次元テンソルについて $b$ 個の $n \times m$ の $d$ 次元距離行列を計算できる.

$$
\begin{gather*}
D_p(x, y)_{ij} =

元記事を表示

python 仮想環境のメリット・作り方・削除方法まとめ

## メリット
ローカル環境で独立した環境を楽に作成できる。
他のライブラリとの競合を起こさない。

## 作り方
### linux環境の場合
ディレクトリ移動
“`
cd /home/nkuser/target
“`
仮想環境作成
“`
python -m venv myenv
“`
仮想環境アクティブ
“`
source myenv/bin/activate
“`
必要なライブラリをインストール
“`
pip ~~~~~~ほにゃらら
“`
完了
インストールしたライブラリ一覧を抽出する
“`
pip freeze > requirements.txt
“`
ライブラリ一覧からライブラリを一斉インストールする。※これで一個ずつライブラリをインストールする面倒な動作を省ける。
“`
pip install -r requirements.txt
“`
—————————————–
### windows環境の場合

クトリ移動
“`
cd /home/nkuser/target
“`
仮想環境作成
`

元記事を表示

時系列分析の勉強

“`
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf

# ステップ1: データ生成
# 平均0、標準偏差1のランダムな時系列データを生成(データポイント数は100)
np.random.seed(42) # 再現性のためのシード値設定
data = np.random.normal(loc=0, scale=1, size=100)

# ステップ2: データの自己相関を確認
# データフレームとして扱う
df = pd.DataFrame({‘Value’: data})

# ステップ3: 自己相関のプロット
plt.figure(figsize=(10, 6))
plot_acf(df[‘Value’], lags=20) # ラグ(遅れ)を20までプロット
plt.title(‘Autocorrelation of Random Time Series Data’)
plt.

元記事を表示

短絡演算 (Python)

Python3エンジニア認定基礎試験の勉強中です。
基礎の基礎を総復習…メモがわりに残していきます。
## 短絡演算
### 💡A and B
“`
1. Aを評価し、その結果の真偽を判定する
2. 判定が「偽」であればBは評価せずにAの判定結果を返す
3. 判定が「真」であればBを評価し、その判定結果を返す
“`
### 💡A or B
“`
1. Aを評価し、その結果の真偽を判定する
2. 結果が「真」の時、Bを評価せずにAの判定結果を返す
3. 結果が「偽」の時、Bを評価し、その判定結果を返す
“`
以下のようなコードがあった場合はどうなるか??
“`python
def num(value):
return value

value1 = num(0) and num(1) and num(2)
value2 = num(0) or num(1) or num(2)

print(value1, value2)
“`
### 💡andが複数続く場合
“`
1. 左から順に評価していく
2. 最初に「偽」になったものが最終結果として返される
3. 「偽」

元記事を表示

【python】globを用いたファイル検索

## はじめに
Pythonでプログラミングをしていると、ファイルやディレクトリを扱う機会が多くあります。
特に**特定のパターン**に一致するファイルを検索したい場合、**glob**モジュールが便利です。

globモジュールは、ファイル名パターンマッチングを簡単に行うことができる[Python標準ライブラリ](“https://docs.python.org/ja/3/library/index.html”)です。

>標準ライブラリ(standard library)とは、プログラミング言語の処理系に標準で付属するライブラリ。部品化されたプログラムなどが収録されており、開発者は言語仕様の一部のようにすべての実行環境に存在する前提で利用することができる。
>引用元:https://e-words.jp/w/%E6%A8%99%E6%BA%96%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA.html

ファイル名の一部に「*」や「?」などの**ワイルドカード**を用いて、柔軟にファイル検索ができます。

:::note info
ワイル

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その121 部分木の動的な作成の続きと潜在的なバグ

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/900d36483538c2745d9a

## これまでに作成したモジュール

以下のリンクから、これまでに作成したモジュールを見ることができます。

| リンク | 説明 |
|:–|:–|
| [marubatsu.py](https://github.com/ysgeso/marubatsu/blob/master/121/marubatsu.py) | Marubatsu、Marubatsu_GUI クラスの定義|
| [ai.py](https://github.com/ysgeso/marubatsu/blob/master/121/ai.py) | AI に関する関数 |
| [test.py](https://github.com/ysgeso/marubatsu/blob/master/121/test.py) | テストに関する関数 |
| [util.py]

元記事を表示

Pythonのprint文を使ってためしてみた。(30/30)

前回からの引き続きです。

https://qiita.com/y_haruki/items/a4bbb942843534915949

### 21\. None値の出力
“`
ceo = None
print(f”Current CEO: {ceo}”)
“`

“`:実行結果
Current CEO: None
“`
変数 ceo に代入されている None が { }内のseoの位置で表示されます。

### 22\. 複数行の文字列(トリプルクォート)
“`
print(“””
Investment Strategies:
1. Value Investing
2. Growth Investing
3. Index Investing
“””)
“`

“`:実行結果
Investment Strategies:
1. Value Investing
2. Growth Investing
3. Index Investing
“`
複数行のテキストを自由に入力することができます。
また、コメントを複数記入するときにも利用できま

元記事を表示

【Streamlit検証】重い処理を含む際のキビキビした動作の実現(st.fragment)

# はじめに
Streamlit は UI 操作の度にコードの再実行が走ることを特徴としています。これによりセッション状態の管理などが大幅に軽減されるのですが、重い処理がある場合に UX の低下を招きかねません。

実際私も下図のように、重い処理を含む際のセレクトボックス操作でよく重たい印象を与える処理を記述してしまいがちです。

![blog1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3540224/ddab0b3d-6b35-dc57-f3b9-2c2a6aa7c3f4.gif)

[上図の Playground](https://streamlit.io/playground?example=blank&code=H4sIAAAAAAAAA4WQ30rDMBTG7_MUIbtpYQzc7ga7UO99gTGk7TINdm1pAm6MgWllgggOYexGNgUZMnFXCiq-zWF_fAvb1FktMnOR5PDlfOf3hTU91xdYsCZFiCUFFz41mjYT2OBRgVCs

元記事を表示

(MA-X320/LAD)DIを検知してプログラムを起動する

# ■概略
[センチュリー・システムズのMAシリース](https://www.centurysys.co.jp/products/linuxserver/max300s.html)はLinuxアプライアンス
ラズベリーパイと同等のことができるが、屋外でも安定して動作するのでIoTソリューションに利用している
*動作保証が-20度~60度(Raspberry Pi 3 model Bは0~70度)
 屋外だと氷点下以下になることがある!
*SLC(書込み回数が多い)SDカード(8GB)もオプション提供あり
*機種によりLTE標準対応で、海外LTE対応機種もある

# ■GPIOとDIN、DOUT
MAシリーズは標準で2以上のアナログ入力(DIN)インターフェースがある
DINを使えば物理的なスイッチを押せば特定のプログラムを起動させることが可能になる
物理スイッチが押された時、python3の常駐プログラム(gpio)で検知し特定のプログラムを起動する方法をまとめた

MA-X320/LADはDINが標準で2個、拡張で24個ある
メインボード側(裏/ACアダプタ側)のDIの名称 DI

元記事を表示

マルチプロセスの gRPC サーバを Cloud Run にデプロイしてモニタリングするための参考資料

# gRPC ハンズオン

まずはこのあたりを一通り実施して雰囲気を掴みます。

公式チュートリアル:

https://grpc.io/docs/languages/python/basics/

クイックスタート(helloworld サンプル):

https://grpc.io/docs/languages/python/quickstart/

helloworld サンプル:

https://github.com/grpc/grpc/tree/master/examples/python/helloworld

# Protocol Buffer Compiler (protoc)

protoc をコマンドラインで実行する際には、カレントディレクトリ、.proto ファイル、モジュールの生成先の位置関係に気をつけてパラメータを指定する必要があります。特に `-I` パラメータの特殊な指定方法 (e.g. `-Igrpc/example/custom/path=../../protos`) についてはコマンドのヘルプ (`-h`) にも載っていないので、下記ページの

元記事を表示

Linux* で AI 開発キットと OpenVINO™ を使用してリアルタイム人数カウントを行う方法

この記事は、Medium に公開されている「How To Perform Real-Time People Counting on Linux AI Dev Kit With OpenVINO™」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
https://medium.com/openvino-toolkit/how-to-perform-real-time-people-counting-on-linux-ai-dev-kit-with-openvino-e9c3aa96d431

この記事の PDF 版は下記からご利用になれます。
https://www.isus.jp/wp-content/uploads/pdf/openvino_35_how-to-perform-real-time-people-counting-on-linux-ai-dev-kit-with-openvino.pdf

![openvino_35_figure1.png](https://qiita-image-store.s3.ap-n

元記事を表示

[Python] 中央値を求める

# 中央値とは
中央値とはデータを小さい順に並べたデータのちょうど中央にあるデータのことですが、データが偶数個の場合にはちょうど中央にくる値がないので、中央に最も近い2つの値の平均値を中央値とします。今回はPythonで中央値を求めてみます。
# 中央値を求める その1
組み込み関数のlen()関数とsort()関数を使用して中央値を求めます。
~~~Python:median1.py
score = [48,52,46,48,53,58,52,48,51,63]

# データの数の半分を求める
half = len(score) // 2

# データを昇順に並べ替える
score.sort()

# データの数が偶数・奇数の場合で場合分け
if len(score) % 2 == 0:
mdn = (score[half – 1] + score[half]) / 2.0
else:
mdn = score[half]

print(“中央値は”, mdn, “です。”)
# 出力結果
# 中央値は 51.5 です。
~~~
# 中央値を求める その2
標準ライブラ

元記事を表示

python参考サイトまとめ

随時更新予定
最終更新 2024.10.3

# Pythonのインストール方法 Windows&Mac

Pythonのインストール方法は?Windows・Macをそれぞれ解説

# Python環境構築 Windows ver
https://qiita.com/SAITO_Keita/items/ddcde4fdcdf5e5eaa933

# Python環境構築 Mac ver

2024年最新版 Python環境構築完全攻略【Mac編】

元記事を表示

pygameでRPGをつくってみる3

# キーハンドラー

何かキーが押されたとき、図形が表示されるコードです。

ここをクリックしてください

“`python:keyhandler

import pygame
from pygame.locals import *
import sys

pygame.init()
screen = pygame.display.set_mode((160,160))
pygame.display.set_caption(“key_handler”)
rect_show = False

while(1):
screen.fill((0,0,0))
if rect_show:
pygame.draw.rect(screen,(255,255,255),(60,60,40,40))
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:

元記事を表示

OTHERカテゴリの最新記事