- 1. Amazon Bedrock,Amazon Kendra 検証まとめ
- 2. Pythonでasyncなexecを実現する方法
- 3. 画像の綺麗さを判定するNIMAスコアを試してみた
- 4. 骨格のランドマーク推定でダンスを比較する
- 5. 【Python venvの使い方】作成と起動方法(MacとWindows両方まとめた)
- 6. queue (9) 係 Python3編
- 7. 内定 Python3編
- 8. 傾斜配点 Python3編
- 9. Python学習の振り返り
- 10. Python/C API で 素朴な二分探索木を書いてみる
- 11. [Python][Julia]project euler 12 (プロジェクトオイラー12)
- 12. JupyterNotebookでコード補完させる方法【データ分析】
- 13. 上手くいかないDQNのコード
- 14. Pythonのコーディングスタイルの統一と静的解析について
- 15. CR(キャリッジリターン)を活用してゲームを作ろう!
- 16. 【配列への副作用を伴う操作】条件を満たす要素のみの配列作成 (paizaランク D 相当)
- 17. 配列のサイズの変更・重複要素の削除 Python3編
- 18. 炭酸イオンかどうかの判定アルゴリズムの比較検証(ログ)
- 19. 全ての要素を用いた処理 (paizaランク D 相当)
- 20. 九九表 Python3編
Amazon Bedrock,Amazon Kendra 検証まとめ
## はじめに
Amazon Bedrock,Amazon Kendraについて今年試したことのまとめです。
## サンプルコード
試しで作ったスクリプトなどはgithubに格納しました。
https://github.com/zgw426/llm-mysamples
## Amazon Bedrockの実装メモ
### Amazon Bedrock実装①:Python3(boto3)で実装してみる
– https://zenn.dev/zgw426/articles/e4046e62916d0f
– Bedrock学びはじめ
– PythonスクリプトでBedrockを使ってみました。
– Pythonモジュールをインストールするとすぐ使えました。便利ですね### Amazon Bedrock実装②:Docker on Cloud9で実装してみる
– https://zenn.dev/zgw426/articles/d5779a1c2ce1e4
– BedrockをPythonで使える環境をDockerで用意できるようにしました。
Pythonでasyncなexecを実現する方法
:::note info
この記事は、[Python Advent Calendar 2023](https://qiita.com/advent-calendar/2023/python)の23日目です。
:::`exec` を使うべきじゃないといった話は一旦置いておくとして。
# 実現したいこと
引数で指定した文字列をPythonコードとして実行する `exec` 関数。
しかし、その中で `await` を使いたい! と思っても、単純にはできません。次のコードはエラーになります。
“`python:exec.py
import asyncioasync def run():
print(‘start’)
await asyncio.sleep(3)
print(‘end’)async def main():
script: str = ‘await run()’
exec(script)if __name__ == ‘__main__’:
loop = asyncio.get_event_loop()
画像の綺麗さを判定するNIMAスコアを試してみた
このエントリーは [一休.comのカレンダー | Advent Calendar 2023 – Qiita](https://qiita.com/advent-calendar/2023/ikyu) の23日目の記事です。
# はじめに
[一休.com](https://www.ikyu.com/)では、施設を検索したリスト画面で画像を大きく見せるつくりをしています。施設が登録した画像を表示するのですが、その選定には任意性があります。
中には画質が悪いせいで、実際の施設は良いのに予約してくれないといったこともあるかもしれません。
というわけで、施設画像の画質が良いことはある程度大切になってきますが、定量的に計算するのは難しいです。
今回はその計算が行える、googleが発表した[ResNetベースの画質評価モデル](https://shiropen.com/2017/12/19/30631/)を利用しました。# コード
主要ライブラリのバージョン
– tensorflow,keras: 2.10.0
– numpy: 1.24.4[neural-image-assessme
骨格のランドマーク推定でダンスを比較する
## 概要
学生時代,研究の過程で骨格座標を使った.
社会人になってから画像処理をしなくなったので,忘れないうちに骨格座標の取得方法をメモしておこうと思う.
ただのMediaPipeに関するメモだと見返したときに飽き飽きするので,
ダンスを比較するようなプログラムも添えておくようにする.言語はpythonで,Jupyter Notebookを利用する.
ライブラリはMediaPipeを主に利用する.## 骨格座標を取得する方法について
### MediaPipe
https://developers.google.com/mediapipe/solutions
MediaPipeがgoogleが提供しているオープンソースライブラリ.
画像処理の基礎知識を要することなく,画像を入力すると手の座標を取得したりできる.
CPU/GPUで処理を選べるが,スマホで駆動するくらい軽量なのでスマホアプリにしても動作する.今回は,`Pose landmark detection`を利用する.
https://developers.google.com/mediapipe/solu
【Python venvの使い方】作成と起動方法(MacとWindows両方まとめた)
タイトルの通り、Pythonのvenvの使い方をまとめてみた。この記事ではWindowsとLinuxの両方のバージョンをまとめている。
## venv環境の作成コマンド
作成時のコマンドはWindows、Linux、Mac全て同じ。
“`ruby:title.rbpython -m venv [作成する仮想環境の名前]
“`
例えばmyenvという名前の仮想環境を作成する場合は、下記のコマンドで良い。
“`
python -m venv myenv
“`## venv環境の起動(Mac, Linux編)
venv環境を実行するときは、Linux系とWindows系でコマンドが少し異なる。Linux系は下記の通り。
“`
source ./[作成した仮想環境の名前]/bin/activate
“`
つまりmyenvという名前のvenv環境を起動するなら、このように書く。
“`
source ./myenv/bin/activate
“`## venv環境の起動(Windows編)
Windows系は下記の通り。“`
.\[作成した仮想環境の名前]
queue (9) 係 Python3編
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__queue
“`py
N = int(input())
A = []
for _ in range(N):
tmp = input()
if tmp == ‘out’:
if len(A) != 0:
A.pop(0)
else:
flag,a = tmp.split()
A.append(a)print(*A,sep=”\n”)
“`ただし、下記のようにする場合、
elseだとエラーが発生するので、ちゃんとelifで指定しないとだめ。“`py
N = int(input())
A = []
for _ in range(N):
tmp = input().split()
if tmp[0] == “out” and len(A) > 0:
A.pop(0)
el
内定 Python3編
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__offer
考え方あってる。。。?と思ったけど
答えも同じだったのであっているようだ
しかし合格者から辞退者を引くとマイナスにならないはずだが
この答えを見るとおそらくマイナスになることもあるってことだろう。なぜなのか?
合格であっても不合格であっても辞退者は出るということだ。
となると、辞退者を引くのはOKで、どっちみち合格者数より辞退者数が上なら
結局は合格者0ってことになるのであってるのか。
なるほど。“`py
N,K,M = map(int,input().split())
A = [int(input()) for _ in range(N)]
Ans = 0
for i in A:
if i >= K:
Ans += 1#合格者から辞退者を引く
Ans -= M#マイナスになる場合は0
if Ans < 0: Ans = 0 print(Ans) ``
傾斜配点 Python3編
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__exam
今まで学んだことを活かせてほっ。
ちなみに答えの方は、maxを使わない方法だった。“`py
N = int(input())
M = list(map(int,input().split()))
A = []
for i in range(N):
A.append(list(map(int,input().split())))B = []
sum = 0
for i in range(len(A)):
for j in range(len(A[i])):
sum += (A[i][j] * M[j])B.append(sum)
sum = 0print(max(B))
“`
Python学習の振り返り
年も暮れということで、アドベンドカレンダーへの参加意欲が高まったのもあり
ずっとやっているPython学習の振り返りをしていこうと思う。## Python勉強を始めたきっかけ
@mamineko さんからDeafエンジニアの会の中で
みやさかしんやさんの[pyサブスクール](https://pysubschool.net/)を紹介してもらったのがきっかけ。
字幕をつけていただいたおかげできこえない私でも普通に授業を受けられるようになり、python学習を始めることができた。
自分のペースで学習することができるため、コースの進め方も私のやり方と非常によくあっていた。
ちなみに今も受講中であり、とても楽しい。@mamineko さんは他にもデフエンジニアの学習機会を増やすということで下記のような働きかけをされたということで頭が上がらない。ありがとうございました!
https://qiita.com/mamineko/items/c41fece301c244af48b7
## 仕事でも使い始める
引き寄せの法則というのか、なぜかわからないけど、仕事でもひょんなことから結局使い
Python/C API で 素朴な二分探索木を書いてみる
年末が近づくと [Python/C API](https://docs.python.org/ja/3/c-api/index.html) を無駄に使いたくなる衝動は今年も無事に(?)発生。なので素朴な[二分探索木](https://ja.wikipedia.org/wiki/%E4%BA%8C%E5%88%86%E6%8E%A2%E7%B4%A2%E6%9C%A8)でも書いてみます。
“`python
from collections.abc import Collection, Iterator
from typing import TypeVarT = TypeVar(‘T’)
class BinarySearchTree(Collection[T]):
…
“`# まずは Pure Python で書き下す
## Poetry new で pyproject.toml
vim a.py で雑に始めて、コードが育ってきたら setup.py, setup.cfg, requirements.txt, MANIFEST.in を追加、でも動きはするので
[Python][Julia]project euler 12 (プロジェクトオイラー12)
### Projevt Euler Ploblem 12 (プロジェクトオイラー12)
#### Highly Divisible Triangular NumberProject Euler 12を解いたので、備忘のために残しておく。
Python と Julia のコードを両方かいた(下段)
処理速度はJuliaの方がずっと速い。自分のPCだと
Pythonが 約5.8秒
Julia が 約1.4秒
だった。### 問題
問題文(適当な和訳なので、完全に正しいかはわからない。。。)
三角数の数列は自然数の足していくことによってできる。
7番目の三角数は1 + 2 + 3 + 4 + 5 + 7 = 28 となる。
初めの10項は1,3,6,10,15,21,28,36,45,55….となる。
7項目までの三角数の要素を並べると以下のようになる。
1:1
3:1,3
6:1,2,3,6
10:1,2,5,10
15:1,3,5,15
21:1,3,7,21
28:1,2,4,7,14,28
28は約数の数が5個を超える最初の三角数だとわかる。
約数の数が500個を
JupyterNotebookでコード補完させる方法【データ分析】
こちらの本を読みながらjupyter notebookと戯れているのですが、コード補完してほしいなと思い設定しようと思ったのですが、、、
jupyter labを入れればOKです。
jupyter notebookのサーバを落として、分析してるプロジェクトの中で、
“`
pip install jupyterlab
jupyter lab
“`でnotebookと同じように起動します。
notebookで作成していたファイルもそのまま編集できるのでこれで十分です。これでコード書きながら、tabを押せば、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/186346/958f4433-b67e-2830-bd04-75fc4172e123.png)このように補完候補がでてきます。幸せいっぱいですね。
上手くいかないDQNのコード
入力層のノードが2個、3層で1層あたりのノード数が3個の隠れ層、出力層のノードが4個のQ-networkとtarget-networkで迷路を解こうとしました。
“`python:Deeplearning.py
class Deepnetwork:
def __init__(self,input_layer,hidden_layer,output_layer,learningrate):
self.count_output=output_layer
self.weight=[np.random.normal(0.0,pow(hidden_layer[0],-0.5),(hidden_layer[0],input_layer))]#入力層、隠れ層間の重み -1.0〜1.0までの正規分布(標準偏差-0.5)
for i in range(len(hidden_layer)-1):
self.weight.append(np.random.normal(0.0,pow(hidden_layer[i+1],-0.
Pythonのコーディングスタイルの統一と静的解析について
# 概要
Pythonを使ったプロジェクトでコーディングスタイルや規約の属人化を抑制するためのツール群について解説します。 VSCodeの拡張機能として使うことを前提とします。
:::note info
※ 私が株式会社愛宕 Advent Calendar 2023に書く記事は主に社内向けに共有しておきたいけど勉強会をするまでもないちょっとしたTipsにしたいと思います。
:::# やりたいこと
– コーディングスタイルの統一
– 空白の入れ方や改行の位置や一行の行数などを全てのソースコードで統一して読みやすくすること
– コーディング規約の順守
– ソースコードレビューでコーディング規約違反を指摘するのは面倒なので規約が守られているかどうかを機械的にチェックすること
– コーディング規約は最も費用対効果の高い品質向上施策と言われています
– 静的解析
– Pythonにはコンパイルがないため実行時にならないとバグが発見できません。しかし、一部のバグは想定している型の違いに起因することが多いため、コードに型ヒントを記述しそれが矛盾がないかどうか
CR(キャリッジリターン)を活用してゲームを作ろう!
*この記事では、wsl2のubuntu(Ubuntu 22.04.2 LTS)を使用しています。
ある日、私はやることが特に思いつかずにぼーっとしていました。
しばらくぼーっとしていたところに唐突にやりたいことが降ってきました。
「あっ…なんかコマンドプロンプトでパックマンみたいなゲームがやりたい。つくろu」そして、作ったのがこちらです。
コード
“`python
import sysmaze_list = [
[” “,”c”,”+”,”+”,”+”,”+”,” “],
[“+”,” “,” “,” “,” “,” “,”+”],
[“+”,” “,” “,” “,” “,” “,”+”],
[“+”,” “,” “,” “,” “,” “,”+”],
[“+”,” “,” “,” “,” “,” “,”+”],
[” “,”+”,”+”,”+”,”+”,”g”,” “]
]
cur_y = 0
cur_x =
【配列への副作用を伴う操作】条件を満たす要素のみの配列作成 (paizaランク D 相当)
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__filter
そんなには難しくなかった。
“`py
N,K = map(int,input().split())
A = [int(input()) for _ in range(N)]
B =[]
for i in A:
if i >= K:
B.append(i)
print(*B,sep =”\n”)“`
配列のサイズの変更・重複要素の削除 Python3編
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__resize
“`py
N,n = map(int,input().split())
A = [int(input()) for _ in range(N)]
B = [0] * n
for i in range(n):
if i < N: B[i] = A[i] print(*B, sep='\n') ``` 指示のとおりにやっていれば難しくはなかった。 if文はちょっと不等号に気をつけないとだめだね。。。 次! https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__unique こいつはちょっと難しかった。 スマートな書き方ではないが フラグを使い、Aの要素がBの配列にあるかループで調べ、 なければ追加する形。 ```py N = int(input()) A
炭酸イオンかどうかの判定アルゴリズムの比較検証(ログ)
## 目標
炭酸イオンを含むかどうかの判定アルゴリズム(注)を,アルゴリズム中の判定条件を変更して,比較検証する.
(注)炭酸イオンかどうかの判定アルゴリズムの作成(ログ) #Python3 – Qiita
https://qiita.com/k-morii-toridai/items/972a713e62c1739932ba## 概要
炭酸イオンを含むかどうかの判定アルゴリズム(注)は,複数の必要条件からできている.そのため,炭酸イオンかどうかの判定条件として十分条件になっていると思われるが,必要条件の多さから,漏れが発生し得る.
そこで,複数の必要条件の数を減らして,減らす前との差分を取り,そのPOSCARファイルに炭酸イオンが含まれるのかどうかを,VESTAを用いて目視確認する.## 実行ログ
time python3 get_CO3_contained_pos_folder_p_list_minus_filter_6.py
len(C_O_existed_poscar_folder_path_list): 205733
10
全ての要素を用いた処理 (paizaランク D 相当)
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__reduce
九九の問題からどうやって解くか難しかった
たとえば入力がこれだとすると
“`
入力例2
5
1
2
3
4
5
“`
Nは5なので(ちなみに必ず2以上)、すべてのペアをだす場合A = 2 B = 1
A = 3 B = 1~2
A = 4 B = 1~3と、要素数−1分ループさせることになるので
こうなる。
ちょっとループで混乱した。。。“`py
N = int(input())
A = [int(input()) for _ in range(N)]
for i in range(N):
for j in range(i):
print(A[i]*A[j])“`
九九表 Python3編
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__reduse_easy
これ自体は前回もやったけども
https://qiita.com/Atsulabo/items/4051922d6961bb954ad3
今回は配列を使うってことで
違う方法で。
もっとも答えは配列を使っていない前回と同じ方法だったが。。。“`py
A = [i for i in range(1,10)]
B = [i for i in range(1,10)]
for i in A:
for j in B:
if j >= 9:
print(A[i-1] * B[j-1])
else:
print(A[i-1] * B[j-1],end=” “)“`