Python関連のことを調べてみた2023年02月06日

Python関連のことを調べてみた2023年02月06日

【leetcode × Python】任意の英数字から隣り合う2つの文字が同じ型でないことを確認する

# はじめに

以前にも、leetcodeは使用したことがあったのですが、今回、2年ぶりぐらいに解いてみました。
その時は`Easyモード`ですら難しく何時間もかけて解いていました。
当時は、Hintと回答を見ながらやっと解ける感じでした。

そこで今回、久しぶりに`Easyモード`を解いてみることにしました。

# 目次

[1.実際に解いた問題](#1-実際に解いた問題)
[2.私が出した回答がこちら](#2-私が出した回答がこちら)
[3.リファクタリングしていく](#3-リファクタリングしていく)
[4.リファクタリング後のコード](#4-リファクタリング後のコード)
[5.最後に](#5-最後に)

# 1. 実際に解いた問題

leetcodeではランダムに問題が選択できるのですが、そこから`Easy`を選びました
今回解いた問題がこちらです。

https://leetcode.com/problems/reformat-the-string/description/

以下が問題を日本語訳したものです

“`
英数字の文字列sが与えられる(英数字の文字列とは、小文字の

元記事を表示

機械学習で歌舞伎町ライブカメラの人流を3D化してみる

# はじめに
この記事は「画像処理系の技術をつかってなにか作ろう!」というゆるい授業で作成したグループ自由課題を抜粋・一部改変して投稿したものです。
モデルの考案やシステムの開発は自分で行いましたが、Introductionでの調査や、実地測定はグループメンバーに手伝ってもらっています

学術論文っぽい体裁になってますが中身はエンジョイ企画なので軽い気持ちで読んでいってください!

先に結果をみたい方は[こちら](#-results)!!

# ? Abstract

本プロジェクトでは莫大なサイズにもなりうるデータを利用価値を落とさずに、すなわち特定の人物の追跡などが可能な質を保ったまま効率的に保管・処理する手法を提案する。

新宿歌舞伎町に設置されている2台の防犯カメラに映る通行人を検出し、防犯カメラの仰俯角・方位角を推定した上でそれらの座標を3次元座標に変換した。複数の防犯カメラ映像から得られる座標群を合成することで2カメラに映る人物の同一判定を自動で行い、人流の追跡に十分な精度の3Dマッピングに成功した。

また、チェス盤模様のボードを用いる従来のカメラキャリブレーションでは、

元記事を表示

ブロックチェーンを実装してみる(入門編)

blockchain

# 概要

簡単なブロックチェーンを実装してみることで、実際にどういう動きをするのかといった部分の理解が深まるのではないか、ということで実装してみようという記事です。
今回は最低限の動きのみ確認し、次回以降、徐々により本格的なものを実装していく予定です。

# 前提

Pyhton 3.11.1 を使用しています。

# 実装

## ブロックの定義

ブロックチェーンの各ブロックには以下のような情報を設定できるようにします。

– インデックス
– タイムスタンプ
– データ
– 暗号通貨の場合は、送金元、送金先、金額といった取引履歴(トランザクション)が記録されています。
– 具体例: https://www.blockchain.com/explorer/

元記事を表示

【Python+Django+Docker+VS Code】WebアプリHello Worldを表示してみる(Mac環境)

環境メモ
⭐️macOS Monterey
⭐️Python 3.11.1
⭐️Django 4.1.6
⭐️Visual Studio Code 1.75.0 ←Mac OS版
⭐️Docker desktop 4.11.1 ←Mac OS版

↓↓完成内容
`http://127.0.0.1:8000/nonHello`
![スクリーンショット 2023-02-06 2.16.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93155/134e4a76-8007-5d7c-efa8-56b26cc1f58c.png)

# 1.概要
Python(プログラミング言語)、Django(Webアプリフレームワーク)、Docker(コンテナ仮想環境)を構築し、WebアプリHello Worldを表示してみます。

# 2.ざっくり説明
## 2-1.Django(ジャンゴ)
Pythonで使えるWebアプリ・サービスのフレームワークDjango(ジャンゴ)を使う。
Djangoはフルスタックフレーム

元記事を表示

Presigned URL を用いた S3 multipart upload を行う (by JavaScript + Python Chalice)

# 問題

AWS S3 によって Presigned URL を発行すれば、サーバーに直接ファイルをアップロードせずとも、S3 に対して直接ファイルをアップロードできる。
しかし、1回のリクエストでアップロードできる最大ファイルサイズは 5GB であり、それ以上のファイルをアップロードするためにはマルチパートアップロードによって分割アップロードを行う必要がある。
ここでは、ブラウザ側に Credential を発行することなく、サーバー側で発行された Presigned URL を利用してファイルをマルチパートアップロードする方法についてを記す。

# プロジェクト全体

プロジェクト全体で利用するソースコードを以下で公開している。
今回は、サーバーサイドは [AWS Chalice (Python)](https://aws.github.io/chalice/) で、クライアントサイドでは JavaScript を Webpack でビルドしたものを利用している。

https://github.com/t-kigi/s3-multipart-uploads-with-chal

元記事を表示

huggingface tutorial “Fine-tune a pretrained model”をDDPでやってみた

# はじめに
multi GPUで学習するためにpytorchのDistributedDataParallel(DDP)を使ってみたいと思います。
kaggleの自然言語コンペではhuggingfaceのtransformersを使い自然言語モデルをfine-tuningすることがよくあります。
そこで、kaggleで使っていくことを考えて、huggingfaceのtutorialである[Fine-tune a pretrained model](https://huggingface.co/docs/transformers/training)をmulti GPUでやっていきたいと思います。

今回実行するプログラムは[ddp_training](https://github.com/oriki101/ddp_training)に保存しています。
今回使ったdocker imageも公開しているのでオンプレで実行したい方は利用してください([kaggle_pytorch_docker](https://github.com/oriki101/kaggle_pytorch_

元記事を表示

ChatGPTで長いコードを最後まで全て出力する方法

# はじめに
いま話題のChatGPT、なんとソートなどの簡単なプログラムコードだけでなく、複雑なコードまで書いてくれます。すごい。
しかし、あまりに長いコードの出力をお願いしてしまうと途中で出力が終わってしまいます。そんなときに残りの部分のコードを全て出力してもらう方法についてご紹介します。とっても簡単です。

ChatGPT : https://chat.openai.com/chat

# 実際にやってみる
今回は、試しに機械学習のコードを出力してもらいます。

とりあえず、PyTorchをCIFAR-10を分類するモデルのコードを書くように頼んでみます。
すると、下のように出力してくれるのですが、途中で出力が終わってしまいます、、
![スクリーンショット 2023-02-05 22.18.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2884446/49e47fe6-7dba-76b8-ed66-5d61759a744f.png)

![スクリーンショット 2023-02-05 2

元記事を表示

Python学習、残り日数計算

こんにちはkmdです。
今回はyoutube等で学習用として紹介されていた日数計算について挑戦してみました。

問題)
今年があと何日あるかを
本日の日付から算出して
「今年はあと何日」と
出力するプログラムを作る

“`
import datetime

nenmatsu = datetime.date(2023, 12, 31)
today = datetime.date.today()
hikaku = nenmatsu – today

print(‘今日は’, today)
print(‘今年は残り’, hikaku.days, ‘日です’)
“`

前回のじゃんけんに比べ非常に難易度を落としたのですが、やはりじゃんけんのプログラムは一番最初に行うには難易度が高かったと感じました。

実行結果は
“`
今日は 2023-02-05
今年は残り 329 日です
“`
まだできないのですが、todayのデータをリストか何かに格納してもっと美しく出力できると思いました。

前回の「初めてのPython、じゃんけんゲーム備忘録」でコードを見てくれた方がいたおかげで、修正してく

元記事を表示

[Python] flet.colorsで簡便に利用できる色の一覧

blend_mode=flet.BlendMode.SRC

実際の色の見え方はBlendモードに依存します。
デフォルトのBlendモードはMODULATEで、各要素のbgcolorの見え方がPageなどの大要素のbgcolorに影響されます。
BlendモードをSRCとした場合はPargeのbgcolorによらずbgcolor本来の色が表示されます。
ただしBLACK87などはSRCモードではBLACKと同じ真っ黒として表示されるようです。

ここではSRCの場合の色の見え方をまとめました。
各Blendモードの処理についてはFlutterの公式ドキュメントをご覧ください。
https://api.flutter.dev/flutter/dart-ui/BlendMode.html

結果

![List_of_Flet_Colors.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2841874/7d9f334d-7b8e-f706-6f2d-452091a64

元記事を表示

周期表をlistにしてまとめてみたよfor python

# 化学の定数をまとめよう

pythonで化学を扱っていると周期表から元素記号、原子量、イオン半径、共有結合半径、…などなど、色々値を取り出したいことがあります。毎回それ調べてリストにするのめんどくさいのでここでリストにしてまとめます。コピペすれば元素に対応するいろんな値が並んだリストができます。

本当はpyhtonライブラリとしては[pymatgen](https://pymatgen.org/)を使うと化学で扱う値は大体網羅されているんで、pymatgen使いこなせるならpymatgenの方がいいと思います。でもなんか自分としてはpymatgenが扱いにくいっていうのと、科学においては同じ物性値でも文献が違うと若干値が変わったりするので、自分でリスト作ったほうがいいかなという感じです。

各リストでは参考文献を示します。値が存在しない場合は空欄で。各リストは第四周期くらいまで。随時必要なものは追加します。

# 元素記号
“`Python
element symbol = [“H”, “He”,
“Li”, “Be”, “B”, “C

元記事を表示

ライフゲーム(Conway’s Game of Life)の簡易実装例

**[ライフゲーム](https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%95%E3%82%B2%E3%83%BC%E3%83%A0)([Conway’s Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life))** は,学術的な側面以外にも,視覚的・パズル的に楽しめる要素が多いことから,一般的にもよく知られている **[セル・オートマトン](https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3)** です.オリジナルのライフゲームは,次のルールに沿っています.

– 初期状態として,生死の二状態を表すセルが二次元状に並んでいる.
– あるセルの次のステップ(世代)の生死状態は,現在の周囲8セルの生死状態に従う.

|現在|次世代|
|:-:|:-:|
|死|周囲にちょうど3つの生

元記事を表示

poetryで利用するpythonをバージョンアップする

## やりたいこと
poetryで利用するPythonのバージョンを`3.10`->`3.11`にバージョンアップしたい!
## 前提
アップデートする開発環境は以下です。
– `Python`
– `docker`を利用し特定バージョンのPythonを導入
– `poetry`
– `container`上で導入
– `poetry config virtualenvs.in-project true`を設定し、プロジェクトディレクトリの中に`.venv`として仮想環境を作成

## アップデート手順
### 1. `Dockerfile`のアップデート
FROM句を下記の通り変更します。
“`diff_docker
– FROM python:3.10
+ FROM python:3.11
“`

### 2. `poetry.toml`のアップデート
依存バージョンを下記の通り変更します。
“`diff_toml
[tool.poetry]
name = “sample”
version = “0.1.0”
description = “”
auth

元記事を表示

ChatGPT APIをPythonで使う

# はじめに
2022年11月末にOpenAIがリリースし公開6日で100万ユーザーを突破したChatGPT。

サイトにアクセスしてChatGPTを使うのもいいですが、APIを使えばDiscordBotにしてみたり自分の開発してるサービスに組み込んだり色々な使い方が出来ます。特にPythonは文法が理解しやすく様々なライブラリが提供されてるのでChatGPTとと組み合わせてみると誰でも簡単に便利なサービスが開発出来ると思います。

僕が今開発しているWebサービスに実際にPythonでChatGPTを組み込んでとても便利だったので皆様にも情報共有しようと思います。

てことで今回の記事では万能なChatGPTのAPIをPythonで使う方法について説明します。

# インストール
ライブラリは以下のコマンドを実行しインストールします。
“`
pip install openai
“`
# API Keyを取得
[OpenAI](https://platform.openai.com/account/api-keys)にアクセスして【Create new secret key】を押

元記事を表示

GFM(GitHub Flavored Markdown)をPDFとして出力する

# はじめに
メモを書いたりするとき、素のMarkdownよりemojiのshortcodeなどがあってイケているGFMで書きたくなりますよね。
自分でプレビューする分には[これ](https://marketplace.visualstudio.com/items?itemName=bierner.github-markdown-preview)のようなVSCodeの拡張機能で十分ですが、PDFに変換したいときにうまくできる方法が意外と見つからなかったので、PDFに変換するスクリプトを作りました。この記事ではそちらを紹介します

# 手順
## 準備
必要なパッケージをインストールします(下記はcondaの場合)
“`shell
conda install -c conda-forge selenium webdriver-manager grip
“`

## 実行
“`shell
python gfm2pdf.py input.md
# -> input.mdと同じフォルダにPDFファイルが出力されます(中間生成物のHTMLファイルも出力されます)
“`
“`pytho

元記事を表示

VirtualBox7.0のhost-only adapterの仕様変更について

# はじめに

VirtualBox7.0において、最近のmacOSバージョンを実行しているVirtualBoxでは、host-only adapterをサポートしていません。

その代用として、host-only networkを使うことになります。

![Screenshot 2023-02-05 at 20.11.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731268/4885f9f3-4030-9514-1732-8c038826168d.png)

以下が公式ドキュメントです。

https://www.virtualbox.org/manual/UserManual.html#network_hostonly

当環境は以下の通りです。

“`text:環境
Mac os: vetura 13.1
VirtualBox: Version 7.0.4
“`
大きな仕様の変更点は以下の通りです。

– ゲストOSにアクセスするためにポートフォワードをするポートを指定する必要がある。

元記事を表示

【実装メモ】pandas基礎レベル

## 書くこと

久しぶりにpandasを触ったときに、実装がわからずググったことをメモる。

– n個の要素数の `Series` 作成
– `DataFrame` に `Series` を列結合( `df[’name’]`, `df.insert()`)
– 既存の列aにlambda関数を実行して、結果を新規列bを作成
– dfを2次元配列(list)に変換

最後にNotion AIの要約も載せてます。

## コード

### n個の要素数の `Series`

“`python
# %%
uuids = [str(uuid.uuid4()) for i in range(5)]
s = pd.Series(uuids)

empty_list = [None] * 5
“`

### `DataFrame` に `Series` を列結合

最後尾の列に `Series` 結合

“`python
# %%
df[‘uuid4’] = s

“`

任意の列番号に `Series`結合

“`python
df.insert(0, ‘top_uuid4’, s)

元記事を表示

【初級】 pythonでモジュールを使う

記載日2023/02/05
モジュールのファイル構成が独特で、少し理解しずらかったので、備忘録として記述します。

なお、クラスとモジュールの使い分けについても考えたので、もし興味がある方は[こちら](https://qiita.com/middle_aged_rookie_programmer/items/858fde1fbb376ab32c5d)も見てみてください。

## 流れ
まず、モジュールのファイル構成やコード記述の概要を記載します。
次に、具体的に機能をコードに書いてみます。

## ファイル構成や書き方
参考サイトによると、ディレクトリ名にモジュールの名前を書き、そのディレクトリ内の\_\_init.py__に機能を記載するのが一般的みたい。
\_\_init__.pyにはメソッド(def)を記述する(classは記述しない)。

プロジェクト
 |
 |ーモジュール名
 |  |
 |  |-\_\_init__.py
 |
 |ーMain.py

~~~python
# __init__.py
import XX

def method():
return

元記事を表示

競走馬の強さ、レース適正を数値化したので折角だし使ってみる

こんにちは、@daifukusanです。
専門学校でITを教えている傍らで、趣味で機械学習やデータサイエンスを勉強しています。

以前、競馬データの分析のための数値化に関する記事を2つほど投稿しました。

この強さの指標とレース適正の指標を使って、色々な分析をしてみましたので、その結果を紹介したいと思います。
※上記の2つの記事で導いた指標を使った説明になりますので、先に上の2つの記事を確認していただくことをお勧めします。

:::note info
競馬分析関連の記事リンク
[競走馬の強さの数値化に挑戦する](https://qiita.com/daifukusan/items/8d3913755704554a71c9)
[競走馬のレース適正の数値化に挑戦する](https://qiita.com/daifukusan/items/b3356f06ba325a6944ea)
競走馬の強さ、レース適正を数値化したので折角だし使ってみる ← 本記事
:::

今回対象とするのは、次のようなデータです。

![image.png](https://qiita-image-store.s3.

元記事を表示

Python StreamlitでOpenAIのGPT-3モデルを使ってチャットしてみる

***今回は、Python StreamlitでOpenAIのGPT-3モデルを使ってチャットをする一例を紹介します。Streamlitライブラリ、OpenAI APIが提供するライブラリopenaiライブラリをつかって、GPT-3を呼び出してテキスト生成や質問応答などのタスクを行うことができます。***

:::note info
– **1. 2023年2月現在、OpenAI GPT-3をPythonから使うには、OpenAIが提供するopenaiパッケージを使用します。**
– **2. openapiを使うには別途OpenAIのAPIキーを取得する必要があります。APIキーを正しく設定することで、このコードを実行することができます。**
– **3. OpenAI APIキーを取得するには、OpenAIのWebサイトにアクセスしてアカウントを作成してください。アカウント作成後、APIキーを取得するためのページにアクセスできます。URLは次の通りです。**
https://platform.openai.com/account/api-keys
– **4. openaiの

元記事を表示

pip install cryptographyでエラー(Docker alpine)

# 前提
cryptographyは、manylinux wheelsを提供しています (2.0以降) ので、すべての依存関係が含まれています。 pip 19.3以上のユーザー (またはpypyを使用していない場合はPython用のヘッダー、OpenSSLおよびlibffiライブラリ用のヘッダーが必要です) が、manylinux2014 (またはそれ以上) 互換のディストリビューション上で実行されている場合、以下のように実行するだけで動作します。
“`bash
pip install cryptography
“`

# Alpineの場合
Alpineでは、Rustをインストールする必要があります。

“`
apk add gcc musl-dev python3-dev libffi-dev openssl-dev cargo pkgconfig
“`

openssl-devがエラーになる場合はlibressl-devを使用する必要があります。

その後、
“`bash
pip install cryptography
“`

元記事を表示

OTHERカテゴリの最新記事