- 1. numpyで重複有配列のrankを計算する方法
- 2. 二人三脚 Python3編
- 3. [Python][Julia]Project euler1 (プロジェクトオイラー1)
- 4. 駄目グラフ002
- 5. 駄目グラフ001
- 6. Amazon Bedrock,Amazon Kendra 検証まとめ
- 7. Pythonでasyncなexecを実現する方法
- 8. 画像の綺麗さを判定するNIMAスコアを試してみた
- 9. 骨格のランドマーク推定でダンスを比較する
- 10. 【Python venvの使い方】作成と起動方法(MacとWindows両方まとめた)
- 11. queue (9) 係 Python3編
- 12. 内定 Python3編
- 13. 傾斜配点 Python3編
- 14. Python学習の振り返り
- 15. Python/C API で 素朴な二分探索木を書いてみる
- 16. [Python][Julia]project euler 12 (プロジェクトオイラー12)
- 17. JupyterNotebookでコード補完させる方法【データ分析】
- 18. 上手くいかないDQNのコード
- 19. Pythonのコーディングスタイルの統一と静的解析について
- 20. CR(キャリッジリターン)を活用してゲームを作ろう!
numpyで重複有配列のrankを計算する方法
配列に対して,各要素のrankingを求めたいとします.
ただし,引き分けがあった場合は,同順位として,次の順位は前の順位+1から再開するものとします.
例えば,`[1,1,2,2,3]`という配列の順位は`[0,0,1,1,2]`というように得たいものとします.
そのような計算は実は`np.unique`で得ることができます.“`python
import numpy as npA = [1, 1, 2, 2, 3]
_, ranks = np.unique(A, return_inverse=True)
print(ranks)
>>> [0, 0, 1, 1, 2]
“`
二人三脚 Python3編
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__find_pair
全く考えつかず。
小さい順にソートするとか
一番小さい数にするとか考えたけど。
結局だめだった。5つの要素があるとして、
数学を思い出して、場合分けってどうやると考えたときに、
5つの数から最初に選び出す場合5通りある。
2回目は4通り。
だから20通りあるというのはわかったが。たしか今までに学んだこととして、すべてのペアの組み合わせを出す方法があった。
https://paiza.jp/works/mondai/array_utilization_primer/array_utilization_primer__reduce
これに対する私の記事
https://qiita.com/Atsulabo/items/347ca18e1ccf234c42bc
これをヒントにして多重ループ文を作成。
答えはペアにさせればよいのでansで配列を作っておく。
で最初のdiffより小さいのがあればd
[Python][Julia]Project euler1 (プロジェクトオイラー1)
### Project euler Ploblem 1 (プロジェクトオイラー1)
#### Multiples of 3 or 5備忘のために残しておく。
#### 問題文
10未満の自然数のうち、3または5の倍数をリストアップすると、3,5,6,9となる。
これら倍数の和は23である。
1000未満の3または5の倍数の和を求めよ。(原文)
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3,5,6 and 9.
The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.#### 答え
233168pythonのコード
“`Python:Ploblem1(Python)
def sum_multiples(limit):
ans = 0
for i in range(1,limit):
if i %
駄目グラフ002
## 円グラフは使うな
「円グラフは使うな」で検索すると山ほど出てくる。
– https://matsuda-blog.info/2129/
– https://jikitourai.net/dont-use-piechart
– https://100athlon.com/dont-use-pie-charts-easily/
– https://dataviz.hatenablog.com/entry/2019/02/05/180316
– https://mainichi.doda.jp/article/2020/03/17/1810
– https://ameblo.jp/saayykka/entry-12793745540.html
– https://www.wingarc.com/product/motionboard/blog/graph_type.html
– https://www.ashisuto.co.jp/qlik-training_blog/article/save-the-pies-for-dessert-japanese.html
– https:/
駄目グラフ001
## デフォルト設定でグラフを描くな
### 課題
平均値 50 点,標準偏差 10 点の正規分布に従うと仮定される 1 万人分の試験成績のヒストグラムを描け。
“`python
import matplotlib.pyplot as plt
import numpy as np
“`### 架空データの生成
“`python
np.random.seed(12345)
x = np.random.randn(10000)*10+50
“`### 何も考えず,デフォルトでヒストグラムを描く
“`python
plt.hist(x);
“`![output_6_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/2f48f890-8afd-e729-64a0-ae5c3dc21428.png)
### 階級設定をちゃんとする
上のグラフは,階級の設定が変!
階級の開始値と階級幅は「きれいな数」にするのが慣例である。
「き
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が 約2.5秒
Julia が 約1.5秒
だった。### 問題
問題文(適当な和訳なので、完全に正しいかはわからない…)
三角数の数列は自然数の足していくことによってできる。
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 =