- 1. Numpyが18年ぶりのメジャーアップデート! 改善点、変更点まとめ
- 2. Application Insights で Azure OpenAI Service を使う Python アプリを監視する
- 3. bokehのMultiChoice Widgetを使って、散布図の特定のプロットを動的に目立たせる
- 4. python google translate
- 5. ランキングでPythonで表現する手法
- 6. `bokeh.plotting.figure.text()`関数の`text`引数にlist型でなくstr型の値を渡すと、グラフに文字列が表示されない
- 7. GCP Cloud Functions (Python) 備忘録
- 8. GCP Cloud Run (Python) 備忘録
- 9. 【Python】デフォルト引数値は、関数実行時に計算されるわけではないので注意
- 10. 【AtCoder】リストの入力の受け取りを美しく書く
- 11. AWS LambdaでLINE⇒Slackにメッセージ連携したメモ
- 12. line-bot-sdk-python V3のコードサンプル
- 13. 中古マンション価格予測データ分析コンペティションで扱ったコード解説
- 14. Flask初心者
- 15. TYTANのサンプルを動かす
- 16. from qiita api
- 17. URDFを定数倍スケールするPythnonコード
- 18. 【解決済み】mediapipe で face_meshがエラーになる件
- 19. ChatGPTのAssistants APIを使ったわかったこと
- 20. Ubuntu + Pasori RC-S380 で Suica を読み込むときのトラブルシュートメモ
Numpyが18年ぶりのメジャーアップデート! 改善点、変更点まとめ
![numpy_logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3743979/4ed7ccbd-2272-e939-a7cc-11f82825d31b.png)
——————————————————————-
# NumPy 2.0.0の主要な変更点皆さんもお世話になっているであろう科学計算ライブラリNumPyが、2006年以降初めてのメジャーアップデートを発表しました。そこで、変更点をざっくりとまとめてみました。以下は変更点の一部であり、それ以外については実際のドキュメントを参照してください。
> 免責事項:この記事は、NumPy 2.0.0の変更点について個人的な見解を述べたものであり、NumPyの開発チームや関係者の公式な見解を代表するものではありません。変更点の影響や対応方法については、必ず公式のリリースノートと移行ガイドを参照してください。また、この記事には不正確な情報が含まれている可能性
Application Insights で Azure OpenAI Service を使う Python アプリを監視する
:::note warn
Azure OpenAI や OpenAI の SDK や OpenTelemetry 関連のライブラリは、更新が頻繁なため、実装や画面表示などが現時点と異なっている可能性があります。正しい情報の確認については、都度公式ドキュメントや各SDK、ライブラリのページをご参照ください。
:::# 本記事について
本記事では、Azure OpenAI Service にアクセスし、履歴などのデータを Azure Cosmos DB に記録するような Python ベースの Web アプリケーションや Web API を Azure の APM である Application Insights を使ってどのように監視できるかを見ていきます。
Python アプリケーションの Application Insights の基本的な利用方法については、下記記事をご参照ください。
https://qiita.com/YoshiakiOi/items/c4de9b1ffc01ecf292f9
本稿では、上記記事の内容を踏まえたうえで、`azure.monitor.
bokehのMultiChoice Widgetを使って、散布図の特定のプロットを動的に目立たせる
# 環境
* Python 3.12.1
* bokeh 3.0.3# やりたいこと
アカウントごとの作業時間とスコアの関係を散布図で表したいです。以下のPythonファイルで散布図を生成しました。
“`python:sample.py
from bokeh.io import output_file, save
import pandas
from bokeh.plotting import figure, ColumnDataSource
from bokeh.palettes import Category10df = pandas.read_csv(“data.csv”)
print(f”{df.dtypes=}”)
print(f”{len(df)=}”)
fig = figure(
width=600,
height=400,
x_axis_label=”worktime”,
y_axis_label=”score”,
)colors = {“X”: Category10[10][0], “Y”: Category10[1
python google translate
“`py
# python -m pip install googletrans==3.1.0a0from googletrans import Translator
import sysargs= sys.argv
if len(args) < 2: print('python3 translate.py 測試') else: line = args[1] translator = Translator() translated = translator.translate(line, dest="zh-cn") print(line) print(translated.text) print() print('finished') import pandas as pd langdict = {0: {'zh-tw': '平安銀行'}} df = pd.DataFrame(langdict).T df['zh-cn'] = df['zh-tw'].apply(lambda x: translato
ランキングでPythonで表現する手法
## 大体に共通すること
df.sort_values()で成績順に並び替える
## 表で表現
グラフで表現
グラフで表現したい際はこちら;
ランキングチャート
https://qiita.com/toyohisa/items/8b659457378dd7df3a35
### ヒストグラム
一般的な棒グラフ。
https://www.sejuku.net/blog/71148
### 積み上げ棒グラフ
平均値を出してランキングにしたい
具体的なコード
~~~
User
vlookup的な機能はPythonにありますか?エクセルシートのデータをベースに事例を書いてください。 A列のデータの種類を参考に、B列に様々あるデータポイントの平均値を行ごとに出して、A列のデータ種類ごとに平均を最終的に一つにして上位20と下位20このA列データのランキング形式でヒストグラム表示をしてほしいです。
ChatGPT
Pythonでは、pandasライブラリを使用してVLO
`bokeh.plotting.figure.text()`関数の`text`引数にlist型でなくstr型の値を渡すと、グラフに文字列が表示されない
# 環境
* Python 3.12.1
* bokeh 3.0.3# やりたいこと
bokehを使って、`(x,y)=(1,2)`の場所に点と文字列を表示したいです。
以下のPythonファイルを実行しました。“`python:sample.py
from bokeh.io import output_file, save
from bokeh.plotting import figurefig = figure(width=300, height=300)
fig.circle(x=1, y=2)
fig.text(x=1, y=2, text=”foo”)output_file(“output.html”)
save(fig)
“`# 何が起きたか
`output.html`をブラウザで開くと、`(x,y)=(1,2)`の場所に点は表示されましたが、文字列`foo`は表示されませんでした。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37903/7874
GCP Cloud Functions (Python) 備忘録
# 1. Deploy Functions
“`
gcloud functions deploy .
“`# 2. Cloud Functionsでentrypointを指定する
“`py:script_cloud_functions.py
def function_name():
print(“hello world”)
“`– `–set-build-env-vars GOOGLE_FUNCTION_SOURCE=script_cloud_functions.py`
– `–entry-point=function_name` (`GOOGLE_FUNCTION_TARGET` これでもOKなはず)“`
gcloud functions deploy test-function \
–gen2 \
–runtime python312 \
–set-secrets SLACK_WEBHOOK_URL=slack-webhook-url-dev:latest \
–set-build-env-vars GO
GCP Cloud Run (Python) 備忘録
# 1. 超基礎Deploy (Build + Deploy)
最初はこれが楽
“`
gcloud run deploy .
“`# 2. BuildとDeployを分ける
:::note info
Cloud RunのConfigだけを変更したい場合などがでてくるとDocker imageのBuildとDeployは分けたくなる
:::“`
gcloud builds submit . –image xxx
“`“`
gcloud run services deploy –image xxx
“`# 3. Cloud Run用のイメージをCloud BuildでBuildする際にentrypointを指定する
“`py:script_cloud_run.py
app = Flask(__init__)
“`Options
1. `env=GOOGLE_ENTRYPOINT=’gunicorn –bind :8080 script_cloud_run:app’`を指定
“`
gcloud builds submi
【Python】デフォルト引数値は、関数実行時に計算されるわけではないので注意
Pythonでは関数の引数にデフォルト値を設定することが可能です。ただし、リストや辞書のような変更可能なオブジェクト、または関数をデフォルト引数として使用する場合は、注意が必要です。
以下のコードでは、1秒おきにUNIX時間が表示されるはずですが、実際には同じ数字が3回表示されます。これは、`n=time.time()`という引数が、関数が定義された時に一度だけ評価されるためです。そのため、表示される3つの数字はすべて、関数が定義された瞬間の時刻となります。
“`py
import timedef printer(n=time.time()):
print(n)for _ in range(3):
printer()
time.sleep(1)# 出力:同じ数字3つが表示された
“`公式ドキュメントによれば、
> デフォルト引数値は関数定義が実行されるときに左から右へ評価されます。 これは、デフォルト引数の式は関数が定義されるときにただ一度だけ評価され、同じ “計算済みの” 値が呼び出しのたびに使用されることを意味します。(中略)このよ
【AtCoder】リストの入力の受け取りを美しく書く
# はじめに
こんにちは! 中2のAwashAmityOakです! AtCoderでは、早く解くために、**解法を思いつく思考力**だけでなく、**コードを短く読みやすく書く**ことも重要です。今回は、私が実践している、**リストを受け取るときのTips**を広める記事です。
# 良くないコード
例えば、次のような形式で、入力が与えられるとしましょう。すべて数値とします。
$N \quad M$
$A_1, \quad A_2, \quad \dots, \quad A_N$
$B_1, \quad B_2, \quad \dots, \quad B_M$このとき、Pythonでは、
“`python
N, M = map(int, input().split())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
“`と書
AWS LambdaでLINE⇒Slackにメッセージ連携したメモ
Lambda関数でLINEのメッセージを受信してSlackに通知する手順をまとめておきます。
自分用メモ。## 前提
– 開発環境:Cloud9
– OS:Amazon Linux 2023
– Pythonバージョン:3.10## Slack側準備
### 動作環境作成
自分が管理者権限を持つワークスペースと投稿先のチャンネルを作成しておきます。
改めて説明することは特にない。### Slackアプリの作成
外部からSlackにアクセスするため、窓口となるアプリを作成します。
[Slack の bot を自作する(AWS Lambda + API Gateway)](https://qiita.com/landwarrior/items/dfac36a1aadac9ab0cd5#slack-app-%E3%82%92%E4%BD%9C%E6%88%90)記載の手順を参考にSlack Appを作成しました。が、今回はLINE⇒Slack連携なのでApp作成後は「Event Subscriptions」の設定は不要です。### Webhookの追加
App作成後、左メニュ
line-bot-sdk-python V3のコードサンプル
# はじめに
慣れないpythonでLINEBotを作ろうとして、line-bot-sdk-pythonを使っていましたが、[公式ドキュメントのサンプル](https://github.com/line/line-bot-sdk-python/blob/master/linebot/v3/messaging/docs/MessagingApi.md)が2024年3月時点で全然整備されていないので、最新版のV3のコードサンプルを自分用にまとめます。パパッと作りたい人は以下参考にしてみてください
https://qiita.com/cog1t0/items/5769b939396051127aa0
# コードサンプル
試したものから随時追加していきます。## 共通部分
“`python
from linebot.v3.messaging import (
Configuration,
ApiClient,
MessagingApi,
)
configuration = Configuration(access_token=CHANNEL_ACCESS_
中古マンション価格予測データ分析コンペティションで扱ったコード解説
## はじめに
Nishika主催の中古マンション価格予測データ分析コンペに参加した際、上位入賞を果たしたコードを解説します。本記事では、コードを3つのパートに分けて、それぞれ詳細な解説と改善点について説明します。https://competition.nishika.com/competitions/mansion_pra/summary
## ① データ前処理
“`def data_pre(df):
nonnull_list = []
for col in df.columns:
nonnull = df[col].count()
if nonnull == 0:
nonnull_list.append(col)
df = df.drop(nonnull_list, axis=1)df = df.drop(“種類”, axis=1)
dis = {
“30分?60分”:45,
“1H?1H30”:75,
“2H?”:120,
“1H30?2H”:105,
}df[“最寄駅
Flask初心者
# Flask
pythonでwebアプリをつくるためにFlaskを調査しました。# 仮想環境の構築
最初に作成したいフォルダに仮想環境を構築します。
“`
$ python -m venv venv
“`
起動方法
“`
$ venv\Scripts\activat
“`
終了方法
“`
$ deactivate
“`# Flaskのインストール
“`
$ pip install Flask
“`# その他のライブラリインストール
エラーが発生したので追加しました。
“`
$ pip install arrow
$ pip install ipython
$ pip install ipywidgets
$ pip install psutil
$ pip install pyarrow
“`# Hello World アプリケーション
ファイル名はhello.py。flask.pyはエラーになるので使用禁止。“`hello.py
from flask import Flaskapp = Flask(__name__)
@
TYTANのサンプルを動かす
## 話題のTYTAN
https://github.com/tytansdk/tytan/
※この記事ではGPUは使いません
### [サンプル1](https://github.com/tytansdk/tytan/?tab=readme-ov-file#%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89%EF%BC%91)
“`bash
~/tytan$ python3 tut1.py
[{‘x’: 0, ‘y’: 1, ‘z’: 1}, -4.0, 22]
[{‘x’: 1, ‘y’: 0, ‘z’: 1}, -4.0, 25]
[{‘x’: 1, ‘y’: 1, ‘z’: 0}, -4.0, 53]
“`問題なし。
### [サンプル2](ttps://github.com/tytansdk/tytan/tree/main?tab=readme-ov-file#%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%8
from qiita api
# qiita apiにて投稿
URDFを定数倍スケールするPythnonコード
URDFを定数倍拡大・縮小するコードを書きました。box,radisu,sphereの寸法や各種jointのxyzを線形倍、質量を3乗倍、慣性モーメントを5乗倍します。Pythonの標準ライブラリであるElementTreeを使っています。
“`python
import xml.etree.ElementTree as ET
##ここにサイズ比を書く
mag_rate = 10
##ここに入力ファイル名を書く
input_file = “input.urdf”
##ここに出力ファイル名を書く
output_file = “output.urdf”#サイズ比の1乗だけ大きくなる要素
elems_and_keys_linear = {“origin”:[“xyz”],
“cylinder”:[“length”,”radius”],
“box”:[“size”],
“sphere”:[“radius”]
【解決済み】mediapipe で face_meshがエラーになる件
# mediappeのface_meshでエラー発生
python で下記のコードでエラーが出た。
“`
import mediapipe as mp
import cv2mp_face_mesh = mp.solutions.face_mesh
with mp_face_mesh.FaceMesh(max_num_faces=1, min_detection_confidence=0.5, static_image_mode=True) as face_mesh:
“`エラー出力
“`
with mp_face_mesh.FaceMesh(max_num_faces=1, min_detection_confidence=0.5, static_image_mode=True) as face_mesh:
File “/opt/anaconda3/envs/pj_mp_cv/lib/python3.8/site-packages/mediapipe/python/solutions/face_mesh.py”, line 95, in __init__
ChatGPTのAssistants APIを使ったわかったこと
# はじめに
先駆者さまがいろいろ記事を出してくれたおかげで、Assistants APIにつて理解が深まったので私もかるく使ってみました。
基本的には以下のTutorial通り利用しただけですが、使ってみるといろいろ気付けたことがあったので備忘録をここに残します。https://platform.openai.com/docs/assistants/overview
# 気づいたこと
### ① Assistantは自然に消えない
Assistantは1回つくると永続?なんですかね。
作成後放置すると一定期間で消えてくれると思ってました。
このため何度もテストをしていたらすごい数のAssistantができちゃってました。
ちなみにAssistant作成状況は以下で確認できました。“`python
client = OpenAI()
“”” 何個かAssistantを作成後 “””
client.beta.assistants.list().__dict__>> {‘data’: [Assistant(id=’asst_ZFW***dw**yDk***OO**uC*E’
Ubuntu + Pasori RC-S380 で Suica を読み込むときのトラブルシュートメモ
# これはなに?
Ubuntu 22.04、SONY Pasori RC-S380、nfcpy を使用して Suica を読み込もうとしたときのトラブルシュートメモです。
# いきなりソースコード
とりあえず、こんなコードを動かしてみました。よくあるやつなので、スルーしていただいて大丈夫です。
実行には nfcpy が必要です。Poetry等を使用して環境を作るか、あるいは pip を使用するかして、nfcpy をインストールしてください。
“`python
#!/usr/bin/env python
# -*- coding: utf-8 -*-import itertools
import nfc
from struct import unpack
from datetime import date, time, datetime
import csvreader_id = ‘usb:054c:06c1’
service_code_purchase = 0x090f
service_code_history = 0x108f
eki_code = {}#