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

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

Pythonでキャッシュファイルをストレージに書き出して出力を再利用する

Pythonの標準ライブラリには、`cache`や`lru_cache`など、メモリにキャッシュを書き出す関数はありますが、ストレージに書き出す関数はありません。
以下は`cache`の利用例です

“`python
from time import sleep
from functools import cache
from datetime import datetime
@cache
def any_func()->datetime:
return datetime.now()
print(any_func())
sleep(1)
print(any_func())
“`

“`bash:出力
2024-04-13 16:19:55.398819
2024-04-13 16:19:55.398819
“`

頻繁にストレージに保存するタイプのキャッシュ処理を書くことがあり、毎回新規で書くのも面倒なのでメモ書きとして書き残します。

“`python
from pathlib import Path
import pickle
from typing impor

元記事を表示

Pythonの仮想環境作り

pythonで仮想環境を作ってパッケージをインストールする方法

仮想環境を作成
“`
python3 -m venv myenv
“`

仮想環境を起動
“`
source myenv/bin/activate
“`

仮想環境でパッケージをインストール
“`
pip install $パッケージ名
“`

元記事を表示

Flask-RESTX でレスポンス返却する JSON データで日本語を文字化けさせない

# 概要
デフォルトで [Flask-RESTX](https://flask-restx.readthedocs.io/en/latest/index.html) は `json.dumps` を ASCII モードでレスポンスを返却してしまう。このため、JSON データにひらがなや漢字が含まれる場合は、内容が文字化けしてしまうという事象が発生する。

# 解決方法
Flask-RESTX の [RESTX_JSON](https://flask-restx.readthedocs.io/en/latest/configuration.html#RESTX_JSON) 環境変数を使って、`json.dumps` 時の引数を上書きする。

“`python
app.config[“RESTX_JSON”] = {“ensure_ascii”: False}
“`

– 実装例
“`python: app.py
from flask import Flask
from flask_restx import Api, Resource

app = Flask(__name__)
a

元記事を表示

GeneratorとIteratorについて

# 背景
Iterabledatasetと出会った!困った゜゜(´□`。)°゜。

# GeneratorとIteratorの違い

**Iteratorの中にGeneratorがいるイメージ**

| |Generator |Iterator |
|—|—|—|
|説明文|generator iteratorを返す関数|反復可能オブジェクト
=1つずつ要素を返せる|
|共通点 |反復処理を行える| 反復処理を行える |
|異なる点 |必要な時にのみ値を生成なのでメモリが少なくてもよい
Generatorは中身が分からない
generate関数がよばれたときにしか次の要素は分からない|一度に全ての値をメモリに読み込む
最初から長さと中身が分かっている|
|実装の方法 |yieldを持つ関数 |自身を戻り値とする“`__iter__“`メソッド、次の要素を返す“`__next__“`メソッドを持つ。クラスで定義されがち |

generator iterator:Generatorによって生成されたIteratorのこと (“`_

元記事を表示

MacでのPython2、Python3の話

macOSでは、標準でPython 2がインストールされていますが、最新のmacOSバージョンではPython 2は廃止され、Python 3が推奨されています。そのため、Python 3を使う場合は通常`python3`コマンドを使用します。`python`コマンドを使用するとPython 2が実行されるため、エラーが発生します。

もし`python`コマンドを使用してPython 3を実行したい場合は、以下のいずれかの方法でPython 3をデフォルトのPythonに設定することができます。

1. **シンボリックリンクの変更**: Python 3の実行ファイルを`python`という名前のシンボリックリンクに設定します。

“`bash
sudo ln -sf /usr/bin/python3 /usr/bin/python
“`

これにより、`python`コマンドがPython 3を実行するようになります。ただし、システムの動作が変更されるため、注意して使用してください。

2. **zshの設定変更**: zshの設定ファイル(通常は`~

元記事を表示

システム全体にPythonパッケージのDjangoをインストールする方法

システム全体にDjangoをインストールする場合は、システムのPythonパッケージとしてインストールします。以下の手順で行います。

1. **Homebrewを使用してDjangoをインストールする**:
Homebrewを使用してDjangoをインストールするには、ターミナルで次のコマンドを実行します。

“`bash
brew install django
“`

これにより、システム全体にDjangoがインストールされます。

2. **バージョンの確認**:
インストールが完了したら、Djangoが正しくインストールされているか確認します。ターミナルで以下のコマンドを実行します。

“`bash
django-admin –version
“`

インストールされたDjangoのバージョンが表示されれば、正常にインストールされています。

3. **プロジェクトの作成**:
Djangoプロジェクトを作成するには、任意のディレクトリで次のコマンドを実行します。

“`bash
djan

元記事を表示

アルゴリズムの勉強 #3 cocktail sort

# 概要

[bubble sort](https://qiita.com/nyamada43/items/c8b6efa00a8b3ac8504e)の改良版

・bubble sortではスキャンを一方向でのみ行うが、cocktail sortは交互に行ったり来たりする。

# 特徴など

・安定ソート
・bubble sortより若干効率が良い。

# 計算量

## Best (最良計算時間)

O(n)

・1巡目のソートで整列した場合

## Average (平均計算時間)

O(n^2)

## Worst (最悪計算時間)

O(n^2)

# 実装例

`あとでかく`

# その他メモ

・別名、「シェイカーソート」「双方向バブルソート」「改良交換法」
 ・「改良交換法」ではわかりずらいし、「cocktail sort」もわかりずらい。これは「双方向バブルソート」の方が言いたいことは伝わる。

元記事を表示

総理大臣の演説を可視化してみる

はじめに

このブログはAidemy Premiumのカリキュラムの一環で、受講修了条件を満たすために公開しています。

Aidemyの自然言語処理講座を6ヶ月で学んでいた@dean3203です(データ分析講座なども学習していましたが、時間の関係で最後まで到達できませんでした)。

自分はプログラミングは未経験で、仕事や他に学んでいることの兼ね合いで、なかなか計画的に受講ができない状態で、かつ夜が忙しいということもあり、チューターへの相談もほぼせずに、独学で学習していました。

今思えば、もっと計画的に相談しつつやるべきでしたが、一応なんとかこの記事を書けるところまで到達できてよかったと思っています。

今回作った成果物はまったくたいしたことないですが、時間があればもっと色々やりたかったというのが正直な感想であり、データ分析や機械学習という分野に大きな興味を持つことができました。

また、プログラミング未経験だったので、コンピューターの言語でこうやってコンピューターを動かすことができるのか、という実感を得ることもできました。

やったこと

岸田総理と菅

元記事を表示

MacでコマンドラインからPythonをインストールする方法

MacでコマンドラインからPythonをインストールする方法を以下に示します。
公式サイトからダウロードする場合は、https://www.python.org/downloads/を参照してください

1. Homebrewをインストールする:
Homebrewは、Mac用のパッケージ管理システムであり、Pythonを含むさまざまなソフトウェアを簡単にインストールできます。ターミナルで以下のコマンドを実行してHomebrewをインストールします。

“`bash
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

2. Pythonのインストール:
Homebrewを使用してPythonをインストールします。以下のコマンドを実行します。

“`bash
brew install python
“`

このコマンドにより、最新の安定版のPythonがインストールされ

元記事を表示

Pythonのバージョン管理ツールについて

Pythonバージョン管理ツールにはいくつかの種類があります。主なものを以下に示します。

1. **pyenv**:
– pyenvは、シンプルで柔軟なPythonバージョン管理ツールです。複数のPythonバージョンをインストールし、プロジェクトごとに異なるバージョンを選択できます。
– グローバルなPythonのバージョンやプロジェクトごとのPythonのバージョンを切り替えることができます。
– また、仮想環境との連携も可能です。

2. **pyenv-virtualenv**:
– pyenv-virtualenvは、pyenvと組み合わせて仮想環境を管理するためのプラグインです。
– プロジェクトごとに独立した仮想環境を作成し、それぞれの仮想環境で異なるPythonバージョンやパッケージを使用できます。

3. **pyenv-win**:
– pyenv-winは、Windowsでpyenvの機能を提供するためのツールです。pyenvと同様に複数のPythonバージョンを管理し、プロジェクトごとに異なるバージョンを使用できます。

4

元記事を表示

アルゴリズムの勉強 #2 bubble sort

# 概要

1.リストの先頭から要素を2つずつ比較します

2.比較対象の要素のうち、大きい方を後ろに移動させます

“`:before
5, 2, 1, 8, 7, 3
“`

“`:after
2, 5, 1, 8, 7, 3
“`

3.手順1,2を最後まで行うと、最も大きい数字がリストの終端に移動する

“`:before
5, 2, 1, 8, 7, 3
“`

“`:after
2, 1, 5, 7, 3, 8
“`

3.リストの終端の位置をずらして(要素数をひとつ減らして)、手順1から再度行っていく。

“`:この場合、終端は3の位置まで
2, 1, 5, 7, 3, 8
“`

# 特徴など

・Good
 ・安定ソート
 ・実装が容易

・Bad
 ・最悪計算量と平均計算量が、O(n^2)となるため遅い。

# 計算量

## Best (最良計算時間)

O(n)

・1巡目のソートで整列した場合

## Average (平均計算時間)

O(n^2)

## Worst (最悪計算時間)

O(n^2)

# 実装例

“`Pytho

元記事を表示

アルゴリズムの勉強 #1 bogo sort

# 概要

1. リストがソートされているかどうかを確認する
2. ソートされていない場合は、ランダム入れ替える

リストがソートされるまで、手順を繰り返し続けます。

# 特徴など

ソートアルゴリズムの中でも非常に効率が悪いことで知られている

# 計算量

## Best (最良計算時間)

O(n)

・まぐれでシャッフルして、順番通り並んでいたならそうなる

## Average (平均計算時間)

O(n・n!)

## Worst (最悪計算時間)

O(∞)

・一生終わらない

# 実装例

“`Python 3.9.6
import random

def in_order(numbers: list[int]) -> bool:
# for i in range(len(numbers) – 1):
# if numbers[i] > numbers[i + 1]:
# return False
# return True
return all(numbers[i] <= numbers[i + 1

元記事を表示

Pythonでわかる高校化学の式

https://kimika.net/r3taishinkoushi.html

“`py
import math

def body_centered_cubic_fill_rate(l):
volume_sphere = (4/3) * math.pi * ((math.sqrt(3) * l) / 4)**3
total_volume = l**3
fill_rate = (volume_sphere * 2) / total_volume
return fill_rate

def face_centered_cubic_fill_rate(l):
volume_sphere = (4/3) * math.pi * ((math.sqrt(2) * l) / 4)**3
total_volume = l**3
fill_rate = (volume_sphere * 4) / total_volume
return fill_rate

# 既知の辺の長さ
l_bcc = 5 # 体心立方格子の場合の辺

元記事を表示

[メモ] batファイルからPythonファイルを呼び出す

# フォルダ内の画像サイズをチェックする方法

画像フォルダ内にbatファイルを配置し、
Cドライブ内のbatchフォルダに格納されている
Pythonファイルを実行して
画像サイズが適切かを調べる処理

“`bat
@echo off
setlocal

REM 画像の横サイズを指定
set “WIDTH=3840”
REM 画像の縦サイズを指定
set “HEIGHT=2112”

REM カレントディレクトリを取得
set “CURRENT_DIR=%CD%”

REM Pythonスクリプトを実行
python “C:\batch\test.py” “%CURRENT_DIR%” “%WIDTH%x%HEIGHT%”

endlocal
echo Waiting for 5 seconds…
timeout /t 5 /nobreak >nul
exit
“`
カレントディレクトリを、
指定パス内のPythohnファイルに渡す

“`python
import os
import sys
from PIL import Image

def main():
#

元記事を表示

Python初心者の備忘録 #14 ~統計学入門編04~

# はじめに
今回私は最近はやりのchatGPTに興味を持ち、深層学習について学んでみたいと思い立ちました!
深層学習といえばPythonということなので、最終的にはPythonを使って深層学習ができるとこまでコツコツと学習していくことにしました。
ただ、勉強するだけではなく少しでもアウトプットをしようということで、備忘録として学習した内容をまとめていこうと思います。
この記事が少しでも誰かの糧になることを願っております!
**※投稿主の環境はWindowsなのでMacの方は多少違う部分が出てくると思いますが、ご了承ください。**
最初の記事:[Python初心者の備忘録 #01](https://qiita.com/Yushin-Tati/items/961dc47d6163f944f7e9)
前の記事:[Python初心者の備忘録 #13 ~統計学入門編03~](https://qiita.com/Yushin-Tati/items/af085499c49d244068ee)
次の記事:まだ

本記事は**統計的仮設検定**についてまとめてあります。
## ■学習に使用

元記事を表示

【基礎と数値型】Python演習100問パック勉強記録−1【python独学】

はやたすさんのUdemyコースPython演習100問パックの間違えたところや復習箇所を自分用メモしていきます。コースはこちら
まずはセクション2と基本とセクション3の数値型のおさらい。

### ディクショナリの作り方
“`python
list = {}
for n in range (1,31):
if n % 3 ==0:
key = f”{n//3}番目”
list[key] = n

print(list)
“`
1.初めに{}で空のファイルを作る
2.Keyを指定
3,list[key]=でバリューを指定

### intの値を結束したいとき
“`python
number2 = int(number + number + number)
test = int(number) + number2
“`
1.数値をくっつけたいときは()内で足せばできる
2.int同士の足し算の場合

### マイナス記号反転
“`pyt

元記事を表示

Pythonで「ディレクトリの作成と削除(pathlibモジュール)」の動作を確認してみた

# 概要

Pythonで「ディレクトリの作成と削除(pathlibモジュール)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/python/file/index11.html

# 実装

以下のファイルを作成しました。
“`sample1.py
import pathlib
p = pathlib.Path(‘./test/code/java/2020’)
p.mkdir(parents=True)
“`
“`sample2.py
import pathlib
p = pathlib.Path(‘./test/back’)
p.rmdir()
“`

以下のコマンドを実行しました。
“`
$ python3 sample1.py
$ ls test
code
$ mkdir test/back
$ ls test
back code
$ python3 sample2.py
$ ls test
code
“`

# まとめ
何かの役に立てばと。

元記事を表示

Prophetで時系列予測

# Prophetを使った時系列分析

初めてProphetを使ってみましたので、コードを公開します。検索しながら触ってみましたが、日本語の記事は非常に少なかったので、この記事が誰かの参考になれば幸いです。

## この記事で分かること
– Prophetを実際のデータに適用した動くコード

## Prophetとは
Prophetはmeta社発の時系列分析ライブラリです。
以下、公式HPの説明をgoogle翻訳したもの。

>Prophet は、非線形傾向が年、週、日の季節性と休日の影響に適合する加算モデルに基づいて時系列データを予測する手順です。これは、強い季節的影響がある時系列や複数の季節の履歴データに最適に機能します。 Prophet はデータの欠落や傾向の変化に対して堅牢であり、通常は外れ値を適切に処理します。
引用元:https://facebook.github.io/prophet/

Rとpythonで動くようで、今回はpythonで動かしました。

:::note info
動作環境
MacOS Sonoma 14.4.1
python3.10.14
VisualS

元記事を表示

特徴画像のサイズを計算する

畳み込みとプーリングを2回ずつ行った際の、特徴画像の一辺の長さを計算する関数です。

~~~Python
def calc_character_size(image_node, padding, kernel_size, stride):

x = ((image_node + 2*padding – kernel_size) // stride) + 1
x = x // 2
x = ((x + 2*padding – kernel_size) // stride) + 1
x = x // 2

return int(x)

#MNISTの場合、一辺が28ピクセルの正方形
#padding=0, kernel_size=3, stride=1として計算
character_size = calc_character_size(28, 0, 3, 1)
print(character_size)
#5
#特徴画像の一辺は5ピクセル
~~~

PyTorch以外のライブラリ(KerasとかTensorflowとか)だと、畳み込みで小さくな

元記事を表示

Streamlitの超ざっくりしたアーキテクチャ

# はじめに
皆さん、Streamlit使っていますか?
とても便利ですよね!!!ね(´・ω・`)?
Streamlitは簡単にWebアプリケーションを開発するだけでなく、クラウドサービスへのデプロイも簡単であることから人気のあるWebフレームワークとなっています。
そんなStreamlitですが、データを読み込んだ際にどんな入出力の流れになっているのだろう?と思ったので、超ざっくりですがアーキテクチャとして流れをまとめてみました。
**※主観的な意見も混じっているかと思いますので、間違いがあればご指摘ください。**

もっと細かな仕組みを知りたい方は以下の記事を参照してみてください。

https://qiita.com/yasudakn/items/089aaf4488fc6a8396ae

# アーキテクチャ
![streamlit_exp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3524375/60bdcb06-46f4-1d5c-7d85-9d60b7c0200d.png)

早速アー

元記事を表示

OTHERカテゴリの最新記事