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

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

【ロバストPythonを読んた感想】ロバストなコードをささえる機能は言語を超えた共通点がある

# はじめに

今年発売されたPythonの本で、よかったと思った本です。

https://www.oreilly.co.jp/books/9784814400171/

この本は、ロバストなコードを書くにはどうしたらいいか。Pythonに最近導入された機能も含めて説明されています。[Clean Code アジャイルソフトウェア達人](https://asciidwango.jp/post/171118672245/clean-code)も本文で引用されている部分があり、クリーンコードについても学べます。

Python2のころからPythonは使用していますが、Python3.3くらいの知識で止まっていたので、Python固有の知識を得る事ができました。
特に、データクラスやABC(抽象基底クラス)は、必見だとおもいました。

この二点をおさらいしてみます。

# データークラス

[データークラス](https://docs.python.org/ja/3/library/dataclasses.html?highlight=class#module-dataclasses)は、

元記事を表示

numpyで重複有配列のrankを計算する方法

配列に対して,各要素のrankingを求めたいとします.
ただし,引き分けがあった場合は,同順位として,次の順位は前の順位+1から再開するものとします.
例えば,`[1,1,2,2,3]`という配列の順位は`[0,0,1,1,2]`というように得たいものとします.
そのような計算は実は`np.unique`で得ることができます.

“`python
import numpy as np

A = [1, 1, 2, 2, 3]
_, ranks = np.unique(A, return_inverse=True)
print(ranks)
>>> [0, 0, 1, 1, 2]
“`

元記事を表示

【Django】ユーザが作成したデータのみをDBから抽出・表示させる方法

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

Djangoの勉強の一環でtodo webアプリを今まで作成してきておりました。
個人的にはCRUD(Create・Read・Update・Delete)の実装の仕方について理解できたので非常に良かったと思っています。
今回はこのtodo webアプリの機能を拡張していきます。具体的にはログインしたユーザが登録したtodoのみしか表示されないようにしたいと思います。ログインしたユーザが別の人のtodoを見れないようにするということですね。

その機能を実装するために、以下の手順で現行の状態から更改していきたいと思います。

1. Modelの修正と反映できているかの確認
1. ログイン画面を作成する
1. CreateViewで作成するtodoにUser属性を追加する
1. 自分が作成したtodoしか表示させないようにする

今までのtodo Webアプリを作成した方法は以下をご覧ください。

https://qiita.com/ohtsuka-shota/items/0e651df83ce5415628f8

元記事を表示

[ChatGPT]AI同士の会話シナリオを実装してみた

# Summary
– この記事は以下の記事の追加投稿です。

https://qiita.com/tomohiku/items/6363e4df11f3750344db

上記記事の

– **2-7. [応用シナリオ] AI同士の会議シナリオの実装詳細**

にあたります。

## この投稿で扱う自作アプリ
– Live demo:https://tomohiku-gpt-web.azurewebsites.net/
– Source code:https://github.com/tomohikue/ExpertImitater
– License:MIT なので、使えそうであればご自由にご利用ください

※ この記事で説明する Code Interprete を実装しており、コードも確認できます。

# はじめに
ChatGPTが巷で流行りだしてから、定番のシナリオとして、
– AI同士に会話させてそれを眺めることで思考を深める

といった使い方について雑誌や著名人の発言でよく聞きました。

例えば、有名どころだとソフトバンクの孫正義さんの発言ですね。

– 10月4日に東京都

元記事を表示

ハッカソン参加時の備忘録 ~ 第0回なぜこの記事を書くのか ~

はじめまして。
ITエンジニアのきゅうと申します。

## はじめに
 エンジニアをしていると、少し前からちょくちょく耳にする『ハッカソン』。
 ハッカソンという言葉はハック(hack)とマラソン(marathon)を合わせた混成語とのことで、
ハッカソンと言う名前に特に意味があるとは思いませんが、要するに決められた時間内に力を出しきって1つアプリや、サービス等を作り上げようぜ!と言う、IT関連のイベントの事です。

 かくいう私も、自分が所属している会社が年に1度、グループ会社を招いてハッカソンを開催しますのでそれに参加したり、外部のハッカソンに応募したりしております。
何故、自らキツいイベントに身を置くのか、きっとマラソン大会に参加するランナーと同じ気持ちだと思いますので、身近にいらっしゃるランナーの方に質問してみると良いかもしれません。

## 概要
 話が脱線しかしておりませんが、ハッカソンは決められた時間内にアプリやサービス等を作り上げる、、、
 言い換えれば動くモノを提供出来なければスタートラインに立つことすら出来ないわけです。

 そこで、これから何回かに渡って、私が過去

元記事を表示

ViteビルドのHTMLファイルをFlaskで読み込む

# はじめに

FlaskでWebアプリケーションを作成するとき「HTMLファイルはVueやReactなどのフレームワークを使用したいし、TypeScriptで書きたい」と思うことがあります。そうするとViteなどでビルドすることになるのですが、ビルドしたファイルをFlaskで読み込もうとしたら、ちょっと手こずりました。

そんなわけで、ビルドしたHTMLファイルをFlaskで読み込む方法です。

# 結論

`npm run build`でビルドすると出力される`dist`フォルダをpythonのファイルの場所に移動する

“`:ディレクトリ構成
├─dist/
│ ├─assets/
│ │ ├─index.js
│ │ └─index.css
│ └─index.html
└─server.py
“`

Flaskの静的ファイルの読み込み設定を以下のようにする。

“`py:server.py
from flask import Flask, send_from_directory
app = Flask(__name__, static_folder=”dis

元記事を表示

Django初心者が簡単なアプリを作る

Django初心者が簡単なアプリ(Todoアプリ)を作りました。
はやたすさんの記事を参考にしました。

https://tech-diary.net/django-todo-tutorial/

この記事では、Pythonのインストール、仮想環境の構築、Djangoのインストール、アプリ作成の流れを書きます。
実行環境:MacBook Air M1, 2020

# Pythonのインストール
以下のサイトにアクセスし、Latest Python 3 Release – Python 3.12.1をクリックします。
https://www.python.org/downloads/macos/
![スクリーンショット 2023-12-09 1.58.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/a99c13f0-63a0-26d8-d755-ddbd24cd2ea4.png)

開いたページを下にスクロールし、macOS 64-bit universal2 installerをク

元記事を表示

Pythonの文字列変換いろいろ。

# はじめに
Pythonの文字列変換について、replaceとre.subについてまとめる。

# 目次
+ [replace](#replace)
+ [re.sub](#resub)
+ [re.sub 基本](#基本)
+ [re.sub flags](#flags)
+ [re.sub 応用](#応用)
+ [正規表現](#正規表現)

## replace
**replace(old, new, count=0)**
“`old“`から“`new“`へ変換する。“`count“`は変換する最大回数。初期値は0で回数関係なくすべて変換する。
“`python:replace_sample.py
# ABCを___に変換
s = ‘ABCDEFABCDEF’
s = s.replace(‘ABC’,’___’,)
print(f’# {s=}’)
# s=’___DEF___DEF’

# count=1で1回変換
s = ‘ABCDEFABCDEF’
s = s.replace(‘ABC’,’___’,1)
print(f’# {s=}’)

元記事を表示

Flask×QdrantベクトルDBでCLIPベースの画像検索をやってみた

# 目次
– [1.背景](#1背景)
– [2.やりたいこと](#2やりたいこと)
– [3.全体構成](#3全体構成)
– [3-1.処理の流れ](#3-1処理の流れ)
– [3-2.CLIP 埋め込みベクトル抽出](#3-2clip-埋め込みベクトル抽出)
– [3-3.Qdrant ベクトルDB](#3-3qdrant-ベクトルdb)
– [3-3-1.NAS画像データの埋め込みベクトル抽出](#3-3-1nas画像データの埋め込みベクトル抽出)
– [3-3-2.Qdrant Collection作成、Pointインサート](#3-3-2qdrant-collection作成pointインサート)
– [3-4.Flask Webアプリケーション](#3-4flask-webアプリケーション)
– [3-5.Nginx リバースプロキシ](#3-5nginx-リバースプロキシ)
– [3-6.dockerデプロイ](#3-6dockerデプロイ)
– [4.画像検索してみた結果](#4画像検索してみた結果)
– [4-1.テキストベ

元記事を表示

ABC334の記録

# はじめに
最近競技プログラミングに取り組んでいるので、解いた問題や参加したコンテストの記録を残す。
ABCについてはA~Cまで解ききりたい。当面は茶を目指す感じで。
というわけでABC334の記録。

ユニークビジョンプログラミングコンテスト2023 クリスマス (AtCoder Beginner Contest 334)
https://atcoder.jp/contests/abc334
成績:Aのみ1完(100)

# A
数値の大小比較で分岐する。
“`python:A
b, g = map(int, input().split())
if b>g:
print(“Bat”)
else:
print(“Glove”)
“`
なお、公式解説によると三項演算子というものがあってそれが便利らしい。
“`python:A’
b, g = map(int, input().split())
print(“Bat” if b > g else “Glove”);
“`

# B
植木算。RとLの間の距離をMで割って、RにもLにも木があったら+1すればいいと思った

元記事を表示

Python opencv で行うカメラキャリブレーション

## 初めに
「[法政大学情報科学部 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/cis_hosei)」 22 日目の記事になります。
どうも、いっせーです!
研究室では、画像処理の研究しています。
今回は、Pythonとopencvで画像の歪みを補正していきたいと思います。

## 概要
画像処理をしたいときに、画像が歪んでいたり、ズレていたりしたら処理に影響が出てしまいます。
カメラで撮った画像は、丸みを帯びていたり、歪みが生じている可能性があるので、この歪みを修正するために「カメラキャリブレーション」という処理を行います。
「カメラキャリブレーション」とは、内部・外部パラメーター、レンズの歪収差係数を求め、画像を補正する処理です。

簡単に言うと、**どれくらい歪んでいるかを求めて、正しい画像に修正する処理**です。

この処理を行うために、opencvのカメラキャリブレーションのライブラリを使用していきます。
今回はわかりやすいように、歪みが大きいステレオカメラで撮影した画像を使います(下の画像)。

元記事を表示

botterは儲からないから辞めた方がいい -初心者botterに捧ぐ プロトコル破綻・ハッキングの経験談-

botterアドカレ2023 24日目の記事です。
https://qiita.com/advent-calendar/2023/botter

こんにちは。

2021年~2022年にかけてsolana-FTXを主軸に遊んでいたものです。
DEX-CEXアビトラをメインで行っていました。

22年に大きな失敗をし、しばらく離れていたのですがそろそろ傷も癒えてきたので記事を書きます。

先に言っておくと **クリスマスに読むような明るい内容ではありません。**

ただ、 **defiが盛り上がる中で、確実にハッキングの被害は増える** ので、経験談を書くことにしました。

日記のような感じで読んでもらえればと思います。
2021年終わり~22年の昔話です。

# アービトラージ前夜
2021年はバブルの年で、BTCを始めとして様々な通貨が上がりました。

2021年初旬、私もBTCを持っていたので、BSCを中心として様々なところで運用し、アルトを買い、ある程度の種銭ができました。

色々調べたところ、 **アービトラージが儲かるらしい** ということを知り、アービトラージを始めること

元記事を表示

Windowsナレータープログラム

# Windowsの読上げをpythonで使ったナレータープログラム
Windows用のナレータープログラムをpythonで作ってみました。

## 工夫点
読みと表示に分けて読み間違える部分をひらがなやカタカナで指定できるようにした点。

## 必要なもの
PySimpleGUI と Win32com ライブラリを使っているので
pip list で確認して入っていなければ
pip install PySimpleGUI
pip install win32com
でインストールしてください。

## ソース(自由に改修してください)
~~~
#
import PySimpleGUI as psg
import win32com.client as wc

spk = wc.Dispatch(‘SAPI.SpVoice’)

# ここにナレーションを入れます。(’よみ’,’表示’)の順で書きます
mess = [
(‘読みには読めない漢字の部分を平仮名で入れます。’,’読みには読めない漢字の部分を平仮名で入れます。’),
(‘読みと表示に分けることで正確に発音できます。

元記事を表示

[個人開発] 過去の天気を簡単にグラフ化できるサービスを作ってみた。

### はじめに
過去の天気を閲覧できるWebアプリを作成しましたので技術的な部分に関して紹介していきます。

### 概要
– サービス名:かこてん。
– URL:https://kako-ten.com/
– コンセプト:過去の気象データを誰でも簡単に可視化・比較ができるサイト
– バックエンド:AWSサーバレス環境 (Lambda/Python, API Gateway, DynamoDB, SAM等)
– フロントエンド:React/Typescript, VITE, MUI, canva等
– インフラ:AWS, CloudFront, S3, Cloudwatch, Cloudformation等
– CICD:Github Actionsによる自動ビルド・テスト・デプロイ
– Github: https://github.com/y-o-shi/kakoten-web-front (フロントのReactコードのみ公開)

### サービス内容
全国約1200地点の気象庁アメダス観測所の過去のデータを非常に簡単な操作でグラフ化できます。単一地点を選択するモードと、複数地点を

元記事を表示

ABC334回答メモ

# 0.はじめに
 今年最後のABCということで気合を入れて取り組みました。
 とこらがB問題で大ブレーキ。
 Cも一筋縄でいかなそうだったので、まさかのAだけフィニッシュかと
 諦めかけましたが、Dは簡単で気持ちを取り直せました。
 そのあとはB,Cも時間をかけて解き、時間一杯でA~DをACして
 2023年を締めくくりました。
 レートは+35で半年ぶり2回目の緑コーダとなりました。

# 1.A – Christmas Present
 BとGを比較しBが大きければバット、Gが大きければグローブを表示
 BatとGloveのスペルを正しく書けるかが一番の間違えポイントな気が
 しました

 https://atcoder.jp/contests/abc334/submissions/48736001

# 2.B – Christmas Trees
 最初は、RとLの差をMで割り、そこに、Rにツリーが立っていれば
 1を加えてはい終了。と思いましたが、例題3が1差で合いませんでした。

 おそらく、AがLとRの間にある場合とか、ALRが-とか+とかいろいろ
 関係あるのかと、

元記事を表示

PyTorchのbroadcastingがよくわらないので調べてみた。

# この記事の目的

大学院に出願する際にGNNについての小論文を提出したので、それまでにGNNをちゃんと勉強しておこうということで勉強し始めたのだが、その最初の段階でPyTorchのbroadcastingが出てきてよくわからなかったのでメモ。

検索してqiitaとかzennとかで何かしらの記事出てくるかな?と思っていたが、あまりヒットしなかったので書く。

このページ([How does pytorch broadcasting work?](https://stackoverflow.com/questions/51371070/how-does-pytorch-broadcasting-work))にbroadcastingについてのドキュメントURLが記載されていたのでそれを読んで理解しようと思う。

紹介されていたドキュメント:
– [numpy broadcasting rules](https://numpy.org/devdocs/user/basics.broadcasting.html#general-broadcasting-rules)
– [PyTor

元記事を表示

物体検出モデルがよりどりみどり MMdetectionの使いかた

# 使いかた

mmdetectionは物体検出とインスタンスセグメンテーションの様々なモデルが使えるツールボックスです。

https://github.com/open-mmlab/mmdetection

以下のようなモデルが同じ実行形式で使えるようになっています。

**物体検出機能**の使い方です。
セグメンテーションについては使ったことがないですが、基本同じ感じで使えると思います。

### インストール

“`shell
pip install -U openmim
mim install mmcv-full
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -v -e .
“`

### 推論

元記事を表示

【初学者向け】データフレームの取扱説明書

# 目的
データフレームからの列・行の取り出し方について一通りまとめる。

# 背景
データを読み込んでデータフレームを作って、特定の行や列を参照したり、書き換えしたりしている。困ったときには、都度ググって対処しているが、基本的な使い方を一通り覚えたく、まとめてみた。
私がよく困ったのは、データフレームからデータを取り出したいのに、Series とか、1行DataFrame として取り出してしまい、参照や書き換えがうまくできないことがよくありました。そもそも、このとり方をすると、どんな型として取得できるのかを理解してなく、混乱し、苦労していました。
そのため、今回、自分のために一通りまとめてみましたが、初学者の方の参考にもなれば幸いです。

# サンプルの dataframe を作成

* 3行x3列のサンプルデータフレームを返す関数を作成する。
* データとそのタイプを表示する関数を作成する。タイトルは[]カギカッコ付きで表示する。

“`python
import pandas as pd

# サンプルの dataframe を取得
def get_sample_df():

元記事を表示

PytorchモデルのCPUとGPUの使用率を取得する

“`python
from torch.profiler import profile, record_function, ProfilerActivity

with profile(activities=[
ProfilerActivity.CPU, ProfilerActivity.CUDA], record_shapes=True) as prof:
with record_function(“model_inference”):
model(inputs)

print(prof.key_averages().table(sort_by=”cuda_time_total”, row_limit=10))
“`

>——————————————————- ———— ———— ———— ———— ———— ———— ———— —–

元記事を表示

ChatGPTとPythonで学ぶ 共起ネットワーク分析

皆さんこんにちは。今日も引き続きChatGPT先生をお迎えして、「ChatGPTとPythonで学ぶ 共起ネットワーク分析」というテーマで雑談したいと思います。それではChatGPT先生、よろしくお願いします。

### **assistant**:

こんにちは!今日は共起ネットワーク分析についてお話ししましょう。

共起ネットワーク分析は、特定の文脈内で2つ以上の要素が同時に出現する頻度を調べる手法です。これはテキストデータを分析する際に特に有用であり、時折NLP(Natural Language Processing)の一部として使用されます。

Pythonを使用した共起ネットワーク分析を行うには、まず必要なライブラリをインポートします。一般的には以下のライブラリが使われます:

1. `NetworkX`: ネットワーク構造の分析と生成を行うライブラリ
2. `matplotlib`: データの可視化を行うライブラリ
3. `nltk`: 自然言語処理のライブラリ。ここでは文章を単語に分割するために使用します。
4. `collections`: Pythonの

元記事を表示

OTHERカテゴリの最新記事