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

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 asyncio

async 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.rb

python -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 = 0

print(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 TypeVar

T = 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 Number

Project 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 sys

maze_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=” “)

“`

元記事を表示

OTHERカテゴリの最新記事