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

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

競技プログラミング AtCoder茶までのチートシート

# 本投稿について
主にAtCoderで茶色までの、灰色でC問題で結構ぶつかるくらいの人向け。私も結構ぶつかるので、より明るい色から照らしてあげるような内容ではありませんのでご容赦ください。

これをそばにカンペとして置いておくとCに挑みやすいかな?という感じです。

## 計算量について
・10000000000はNG(10の5乗の2重ループ→10の10乗はだめ)
・625000000はOK(25000の2乗)
→10**9→1000000000までならワンループはいける? そのあたり投稿主もよくわかっていません。

## チートシート列挙
・余りを求める(%)

・1個を決め打ちする
3重ループになりそうなときの1つだけ決め打ちしてから全探索など

・バケットを検討する
l=n*[0]

・そっちで回さない
別視点での全探索の検討

・とりあえずリストはソートできないか?
ソートしないまま行うのではなく一旦ソートしたほうが処理が容易にならないか?

・途中結果のみを保持しておいて最後に連結する考え方
1個ずつ愚直に操作するとTLEになるケース

・実際のリスト、位置を記録したリスト

元記事を表示

アニーリングマシンにとても簡単な問題を解いてもらう

### 背景
一昔前は、「量子コンピュータ」というと、すごく未来的なものだと感じていたが、ここ数年で、一気に「民主化」が進んできた感覚がある。この一因として、量子コンピュータ「関連技術」の広がりがある。すなわち「量子コンピュータではないけれど、明らかに関連性がある/派生した技術」が裾野を伸ばし、古典コンピュータと地続きの領域にまで伸びてきている、という状況が生まれている。

### アニーリングマシンについて
「アニーリング」とは、元々はセラミックス等の「焼きなまし」を指す。焼結体からなる構造体では、例えば表面の傷や構造の欠陥を、構造体の加熱によって消失させることができる(ことが多い)。概念的に言えば、エネルギー的に不安定なところに引っかかっている状態(=傷)に障壁を超えるだけのエネルギーを与えて、安定な状態(=傷の無い状態)に落としてやる、ということをしているわけだ。このような操作は、もちろん今でも頻繁にセラミックス関連開発の現場では行われているわけだが、より一般化して、「エネルギー的に不安定なところに引っかかりがちなものを安定状態に落とす」ような操作が、「アニーリング」と呼ばれるよ

元記事を表示

pythonのバイナリパッケージなぜwheelというのか説明できるやつ0人説

pythonは世界中で使われている最もポピュラーなプログラミング言語の一つです。
その名前が何にちなんでいるかは調べたことのある人はわかるでしょう。
そう、イギリスのコメディグループ[モンティ・パイソン](https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%BB%E3%83%91%E3%82%A4%E3%82%BD%E3%83%B3)です。
もともとpypiはCheeseShopというコードネームで開発され、今もその呼び方で呼ぶ人がいるようにモンティ・パイソンは名前に関して多大な影響を与えています。

wheelもその例にもれずなのですが、その前に実際のスケッチ、日本語で言うショートコントを見てみましょう。

これは[空飛ぶモンティパイソン](https://ja.wikipedia.org/wiki/%E7%A9%BA%E9%A3%9B%E3%81%B6%E3%83%A2%E3%83%B3%E3%83%

元記事を表示

①Portfolio using Python : Creating a Python Environment with Docker and VS code

I have a very important interview next week.
With my current skills, I don’t think I will get the position, but I’ll do my best to prepare as best I can in the limited time.

【Objective】
Bringing a portfolio for job interview.
According to the job posting and webinar , Python is often used at work in the company where I am interviewing.
Althouh I’m completely new to Python, I create something tangible in a short period of time.

【Day1】
Before anything else, creating a dev environment is a mus

元記事を表示

自動微分を実装して減衰振動を微分してみる

# 概要
機械学習を調べていると自動微分という技術があることを知りました。内容をよく理解するために、自動微分を実装してみたいと思います。最後に、自動微分を使った減衰振動の微分を求めてみようと思います。
# 自動微分とは
任意の関数$f$に引数$x$を代入して戻り値を得るとします。
“`math
y=f(x)
“`
この時、同時に以下のような関数$f$の$x$に対する微分を求めるのが自動微分です。
“`math
g=\frac{\partial f(x)}{\partial x}
“`
なお、$y$も勾配$g$も具体的な数値$x$に対する数値であり、抽象的な数式を得られる訳ではありません。
# 実装上のルール
自動微分を実装する1つの方法として、あらゆる演算において、オリジナル値の計算と微分値を同時に行うという方法があります。
実装上では、あらゆる値は$\mathbb R^2$を、あらゆる関数は$\mathbb R^2\to\mathbb R^2$の形を取ることとし、要素0番目に0階微分のオリジナル値を、要素1番目に1階微分した勾配値を入れます。例えば
“`python
Z =

元記事を表示

機動戦士ガンダム~python discriminate~ ガンダムの画像を判別するアプリの作成

#目次
[1.はじめに](#1-はじめに)
[2.記事の概要](#2-記事の概要)
[3.アプリ作成の理由](#3-アプリ作成の理由)
[4.成果物についての情報](#4-成果物についての情報)
[5.機械学習](#5-機械学習)
[6.アプリを作ってみての課題](#6-アプリを作ってみての課題)
[7.Pythonを学んでみて](#7-Pythonを学んでみて)
[8.終わりに](#8-終わりに)

## 1.はじめに
 はじめまして。プログラミング未経験でエンジニアへの転職を目指し、Aidemyの講座を受講している文系公務員です。初めての投稿のため、至らない点ばかりかと思いますが、何卒ご容赦を。
## 2.記事の概要
 講座提出用にQiitaに記事を投稿させていただきます。アプリの作成経緯や準備、作成過程を書いていこうかなと思います。
## 3.アプリ作成の理由
 タイトルにもありますように、ガンダムの画像を判別するアプリを作っていこうかと思います。その理由なんですが、2点ありまして。1点目が学習したプログラミング言語であるPythonで機械学習やディープラーニングを使った画像認識

元記事を表示

Dogelog Player: New PyPy offers significant Speed-Up

## Introduction
Dogelog player is a Prolog system written 100% in Prolog targetting the JavaScript and the Python platform. We have adopted the core benchmark suite from formerly Jekejeke Prolog and usually run it for both nodeJS and PyPy.

![doge-car.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416192/c10c1d02-28cb-2e96-a3ad-bc8ca72d459e.jpeg)

The benchmark suite gives some proof that the new PyPy v7.3.10 offers a significant speed-up of ca. 25% over its previous versions.

元記事を表示

【Python】ChatGPTに点群データ出力を手伝ってもらった

# 概要
研究で使おうとしていた点群データがテキストファイルで提供されており、可視化をしたいと思ったものの3Dファイルの作り方がよくわからなかったので、[ChatGPT様](https://chat.openai.com/chat)にお願いしました。

**今回使用するデータセット**:https://github.com/czq142857/BAE-NET にて提供されているデータセット

(元データは[A Scalable Active Framework for Region Annotation in 3D Shape Collections](https://cs.stanford.edu/~ericyi/project_page/part_annotation/) )

# ChatGPTの回答

**質問内容**

以下のような、一番右の値がクラスIDを示す、テキストファイルに書かれた点群データを、同じクラスIDを持つ点に同じ色を付与して、obj形式に変換したい。pythonで実装する方法を教えて。

“`
-0.182850 0.206710 -0.143640 0

元記事を表示

[FastAPI] 知っておくと超便利!!!ミドルウェアを使用したエラーハンドリング

# この記事を読んでできること
– エラーハンドリングができる
– 同じような例外処理を各APIに書かなくても済む(可読性・保守性の向上)
# 概要
StarletteのBaseHTTPMiddlewareを使用して共通した複数の例外処理の機能を受け持つようにする
# 記述しないこと
– FastAPIについて
– 例外処理について
# 使用技術
– Python 3.10.4
– fastapi 0.78.0
– Starlette 0.19.1

# ミドルウェアの処理の流れ
1. アプリケーションに届いたリクエストをミドルウェアが受け取る
1. そのリクエストに対して何らかのコードを実行する
1. アプリケーションの残りの部分にリクエストを渡して (path operation によって) 処理させる
1. ミドルウェアはアプリケーション (の path operation) によって生成されたレスポンスを受け取る
1. そのレスポンスに対して何らかのコードを実行する
1. レスポンスを返す
# 実装例
“`main.py
from fastapi import FastAP

元記事を表示

シェルコマンドechoのスペース区切りに対する不可解な挙動

スペース区切りの文の単語数を調べていたところ
“`
$ echo “【 対象 者 】” | wc -w
4
$ echo “【 対象 旅行 者 】” | wc -w
6
“`

「旅行」の2文字があると、1単語ではなく2単語としてカウントしてしまう模様…
– 「旅」を消した場合
“`
$ echo “【 対象 行 者 】” | wc -w
5
“`

echoは信用ならないとわかったので、参考程度に使いつつ、pythonのsplit関数を信用していこうと思います。

※勘違い、知らない仕様である可能性は多いにあるので、現在(2023.01.20)も調べています。有識者の方のアドバイスをお待ちしております。

元記事を表示

PySimpleGUIで簡易アプリのメニュー画面を作る

# PySimpleGUIでメニュー画面を作成する。

PySimpleGUはデスクトップアプリを作成するGUIライブラリ
:::note alert 
その名の通りデスクトップアプリなので、ローカル上で動作する。googleclabでは実行してもGUIは表示されないので注意。
:::

## インストール
“`
pip install pysimplegui
“`

## インポート
“`
import PySimpleGUI as sg
“`
でインポートできる。
毎度毎度pysimpleguiと打つのは大変なので
as sg
とすると後が楽。

## レイアウトでよく使うもの

・sg.Text(‘キーワード’)
・sg.In(key=’word’)
・sg.InputText()
・sg.FolderBrowse(key=”folder”)
・sg.Button(‘スタート’)

### Text
テキストの表示
### In
入力欄
### InputText
文字入力
### FolderBrowse
![image.png](https://qiita-imag

元記事を表示

python numpy filter

“`python
npArr = dataDict[symbol]
dateFilter = np.array([date])
res = np.in1d(npArr[:, 5], dateFilter)
idx = 0
for i in range(0, len(res)):
if res[i]:
idx = i
filtered = npArr[res]
div = npArr[idx][4]
“`

元記事を表示

[Plotly+Streamlit]Pythonで時系列データを可視化する

## 概要
* StreamlitとPlotlyというライブラリを使って時系列データの可視化ツールを作成した
* **Plotly**で**インタラクティブな操作ができる**グラフを描画
* Pythonの有名なグラフ描画ライブラリである**matplotlib**や**Seaborn**に比べ、グラフ上でドラッグすることでズーム操作等ができる!
* 使用言語は**Python**のみ。フロントの知識(HTML, CSS, JavaScript, etc…)は不要!

* この記事で紹介しないこと
* **Streamlit**, **Plotly**の詳細な使い方
* Python動作環境構築の手順

## はじめに
私の部署では、船のエンジンに関する業務を行っています
船舶のエンジンのセンサから収集した計測データを使って機械学習モデルを作成し、実際の船舶運航時にエンジンに異常がないかをチェックするシステムを運用しているのですが、モデル作成のフェーズにてあるツールを作ってほしいという要望が到来しました
作成するアプリケーションの概要は以下の通りです
* 計測データ

元記事を表示

POP2-CCSM4海洋モデルの特殊グリッドを緯度経度格子座標に変換する

アホみたいに時間を浪費したので、メモを日本語でまとめておきます。
今回は、gx1v6グリッドを1度x1度グリッドに変換しました。

# ゴール
**海洋モデルPOP独自の座標 (グリーンランドに極がある) を、普通の緯度経度格子座標 (1度x1度) に変換する。**

## 問題点

1. [CMIP5-PMIP3](https://esgf-node.ipsl.upmc.fr/search/cmip5-ipsl/)で提供されている出力が、モデル座標のものしかなかった。
2. ググったところ、NCLで変換する方法は、わりとたくさん紹介されていた ([例](https://www.ncl.ucar.edu/Applications/ESMF.shtml))。だが、筆者はNCLは今まで使ったことがなく、このためだけにゼロからNCLを勉強するのは避けたい。

## 解説している記事を発見
[こちらのページ](https://iloveocean.top/index.php/archives/807/)にある方法でうまくいった。
以下、日本語でまとめなおしたが、適宜引用元を参照されたし。

元記事を表示

python Dataframe datetime to string

“`python
df = df.assign(Date=df.index.date.astype(str),format=’%Y-%m-%d’)
“`

元記事を表示

[FastAPI] 鬼の爆速実装!!!デコレータを使用したロギング

# この記事を読んでできること
– Pythonのloggingモジュールを使用して、ログ出力ができる
– デコレータの実装

# 概要
Pythonでのロギングの実践
# 記述しないこと
– FastAPIについて
– 基礎的なPythonの記述方法
– ロギングの基本的な設定(log_config.yaml)
– 詳細な引数の設定
# 使用技術
– Python 3.10.4
– fastapi 0.78.0

# 実装例
“`main.py
from fastapi import FastAPI

from routers import router
from log import read_logger

read_logger()

app = FastAPI()
app.include_router(router.router)

“`
“`api/address.py
from logging import getLogger getlogger

from log import (start_and_end_logging, ApiName)
from schem

元記事を表示

python get business days between two dates

“`python
import holidays
from datetime import datetime
import pandas as pd

HOLIDAYS_US = holidays.US()
def GetBusinessDays(start, end):
startTime = datetime.strptime(start, ‘%Y-%m-%d’)
endTime = datetime.strptime(end, ‘%Y-%m-%d’)
dates = pd.date_range(startTime,endTime,freq=’D’)

res = []
for date in dates:
if date.weekday() in holidays.WEEKEND or date in HOLIDAYS_US:
continue
res.append(date)
return res

if __name__ == ‘__main__’:
dates=

元記事を表示

python string to datetime

“`python
from datetime import datetime
datetime.strptime(datetime_str, ‘%Y-%m-%d %H:%M:%S’)
“`

### time to string
“`python
time_obj.strftime(‘%Y-%m-%d’)
“`

元記事を表示

ImportError: cannot import name ‘extract_features’ from ‘tsfresh’ (unknown location) で一生嵌った話

tsfreshの`extract_features`関数をimportできずに一生嵌っていた。

環境
tsfresh==0.20.0, Python 3.9, Jupyter lab
“`
from tsfresh.feature_extraction import extract_features
“`

“`
ImportError: cannot import name ‘extract_features’ from ‘tsfresh’ (unknown location)
“`
のエラーがでて`extract_features`関数をimportできなかった。

https://github.com/blue-yonder/tsfresh

を見てみると…

おい、`extract_features`関数があるの、feature_extractionディレクトリの下の`extraction.py`じゃねーか!!

https://github.com/blue-yonder/tsfresh/blob/main/tsfresh/feature_extraction

元記事を表示

Pythonにオーバーロードを実装する。

# はじめに
Pythonにはないオーバーロード。
`typing`の`@overload`も所詮は型チェッカー。引数の型に応じて分岐してくれる機能はない。
ならば作ってみよう。

追記
一応こんなものはあるけど、第1引数しか見てない?
[functools.singledispatch](https://docs.python.org/ja/3/library/functools.html#functools.singledispatch)

# オーバーロードの実装
“`py
def overload(f):
if overload.__dict__.get(“funcs”) is None:
overload.__dict__.update({“funcs”: {}})
if overload.funcs.get(f.__name__):
overload.funcs[f.__name__].update({tuple(f.__annotations__.items()): f})
else:
overlo

元記事を表示

OTHERカテゴリの最新記事