Python3関連のことを調べてみた2021年11月05日

Python3関連のことを調べてみた2021年11月05日

【Python】文字整数 昇順ソートリスト作成 レシピ

# 1.【やりたいこと】

“`python
array_1 = 10 6 8 1 5 9 3 4 7 2

type(array_1)
> `class ‘str’`

# やりたいこと
array_2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
“`

# 2.【作成レシピ】
使用メソッド
* 内包表記:array_1の文字型の整数をint型へ変換 (str型→int型)
* 組み込み関数:sorted()

“`python
array_1 = 10 6 8 1 5 9 3 4 7 2

# レシピ
array_2 = sorted([int(i) for i in array_1.split()])

# 完成
array_2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
“`

元記事を表示

PyTorchの乱数シード固定【GPU】

# PyTorchの乱数シード固定方法
機械学習では、再現性を持たせるために、乱数のシードを固定することが多い。GPU使用時におけるPyTorch乱数シード固定を、PyTorchのドキュメントからまとめた。

“`python
import random
import numpy as np
import torch

def torch_fix_seed(seed=42):
# Python random
random.seed(seed)
# Numpy
np.random.seed(seed)
# Pytorch
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.backends.cudnn.deterministic = True
torch.use_deterministic_algorithms = True

torch_fix_seed()
“`

Pythonの組み込みモジュール、Numpy、PyTorchそれぞれの乱数シー

元記事を表示

seleniumチートシート(Windows&Python編)

分類:Python3,Windows10,クロム
日付:2021/11/04

seleniumの使い方を毎回忘れるのでチートシートにしました

#環境構築

###①クロムのバージョンチェック

メニュー右上の︙アイコンをクリック、→ ヘルプ → googleクロムについて を選ぶ

c1.JPG

c2.JPG

###②ダウンロードのページ
  https://chromedriver.chromium.org/downl

元記事を表示

Python3なら4行で単一換字式暗号化プログラムができた

(追記)fsdさんからコメントをいただき、それを参考にしたら、3行でコードが書けた。下のコメント欄に載せました。

(元記事)
 ITエンジニア向け転職・就活・学習サービスサイトのスキルチェック問題に挑戦するなかで、「単一換字式暗号」がでてきた。(単一換字式暗号については、ググってください。)

 最初に提出したコードは`for`、`if`を多用していたので、満足のいくものはでなかった。そこで何種類か考えたなかで、次のコードは初心者なりにうまくできたと思った。

“`python3
plain = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz’ # 平字
cipher = ‘czQPHLsU rneVdEKfvyWSwIGCZqgoFBxtTiklDaOJRjNbAhmYMupX’ # 暗字

# 換字表の作成
table = [i for i in range(128)]
for i in range(len(plain)):
table[ord(plain[i])] = ord(cipher[i])

# 暗号

元記事を表示

論文でよく使うmatplotlib subplotsの覚え書き

論文を書く際に複数枚のグラフの内,最も左にあるグラフのみx軸を表記し,最も下にあるグラフのみy軸を表記するという形式をよく利用するので覚え書きします.
また,左下隅のグラフのみ消すという操作もよく利用するので,customizeの例 (`ax.axis(‘off’)` によって可能です) に載せています.

“`python
from dataclasses import dataclass
from typing import List, Optional

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams[“font.family”] = “Times New Roman”
plt.rcParams[“font.size”] = 14

@dataclass
class GridSpecKeywords:
“””
Attributes:
width_ratios, height_ratios (Optional[List[int]]):
Th

元記事を表示

【備忘録】pip3 install TA-Lib でエラーが出た時の対処法

TA-Libインストールで手間取ったので、正常にインストールする手順を備忘録としてまとめます。

“`
pip3 install TA-Lib
“`

上記実行すると、`ERROR: Failed building wheel for TA-Lib`のようなエラーが出てインストールできない。

以下、インストール手順
まず、homebrewでTA-Libをインストール

“`
brew install TA-Lib
“`

その後、pip3 でインストール

“`
pip3 install TA-Lib
“`

これで正常にインストールできました。

元記事を表示

SimpleGUIのFileBrowseで一度選択したフォルダのパスをクリアする

#背景
SimpleGUIのFileBrowseでファイルのパスを入手、再度空白に戻すという操作を紹介します。

#コード紹介
コードは上半分でウィンドウレイアウト、下半分で挙動を定義しています。上半分のウィンドウレイアウトのコードは以下の通り。

“`python:demo1.py
import PySimpleGUI as sg

sg.theme(‘DarkTeal7’)
layout = [[sg.Input(key=”input_path”), sg.FileBrowse(‘Select’, key=’input_path2′)],
[sg.Button(‘submit’, key=’submit’),sg.Button(‘clear’, key=’-clear-‘) ],
[sg.Output(size=(60,20))],
]
window = sg.Window(‘ファイル選択’, layout)
“`
残り半分のコード。右上の×ボタン、submitボタン、clearボタンの挙動を定義。(敢えてelseを使

元記事を表示

Ubuntu18.04 + pyenv + pipenv + Django + Apache2 なデプロイ その2

#Apache2のインストールと設定

“`
sudo apt install -y apache2 apache2-dev libapache2-mod-wsgi-py3
“`
##`mod_wsgi`のインストールと設定
きちんと仮想環境に対してインストールすること.その後,`django.conf`設定のための情報収集を行う.

“`
ttimes@xxx-xxx-xxxxx:~/app/TTimes$ python3 -m pipenv shell
(TTimes) ttimes@xxx-xxx-xxxxx:~/app/TTimes$ pipenv install mod_wsgi
(TTimes) ttimes@xxx-xxx-xxxxx:~/app/TTimes$ mod_wsgi-express module-config
LoadModule wsgi_module “/home/ttimes/app/TTimes/.venv/lib/python3.8/site-packages/mod_wsgi/server/mod_wsgi-py38.cpython-38

元記事を表示

SQLModelを試してみた

#SQLModelとは
公式はこちら

現在PythonのWebFrameworkで最も注目されている(?)FastAPIの作者tiangolo氏による新しいPythonのORMである。
###特徴
Pythonの型付けを強力にサポートするPydanticと、有名なORMのSQLAlchemyをベースにラップしたもので、直感的で短いコードが書けてSQLAlchemyとの互換性も優れているようで、平たく言うと今までデータベースのスキーマをPydanticで定義していたが、SQLAlchemyとFastAPIを使う場合は不要になったということ(だろう)。

早速試してみました。

環境 Ubuntu20.04 Pipenv Python3.8.10 MySQL8.0 VScode

###インストール

“`linux
pipenv install fastapi sqlmodel uvicorn
“`
とやるも…

“`
Creating a Pipfile

元記事を表示

【AWS CDK】Batchで起動テンプレートを利用する場合のユーザーデータの実装

Batchのコンピューティング環境で利用する起動テンプレートのユーザーデータは **MIME マルチパートアーカイブの形式** で定義しなければならないらしい。
CDKで実装するときに少しハマったので調べた内容を残しておく。

https://docs.aws.amazon.com/ja_jp/batch/latest/userguide/launch-templates.html#lt-user-data

# 実装

何はともあれ実装。こんな感じで実装するとうまくいく。

“`python
from aws_cdk import aws_ec2

# UserDataインスタンスの作成
user_data = aws_ec2.MultipartUserData()

# UserDataの中身を定義。
user_data.add_part(
# MIME マルチパートアーカイブの形式のUserDataを定義する
aws_ec2.MultipartBody.from_raw_body(
# データの種類を指定。今回はシェルスクリプト

元記事を表示

AOJトライに関する知識知見の記録共有 (Volume0-0042)

# 概要
A Thief

https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0042

# コード
TIPS:ビット演算での探索パターン制御

“`
def ret_value_weight_items(items, w_limit=-1):
items = sorted(items, key=lambda x: -x[1])
le = len(items)
ret = []
for ptnbit in range(pow(2, le)):
its = [items[i] for i in range(le) if (ptnbit>>i)%2 == 1]
#print(its, ptn)
value, weight = [sum([v[idx] for v in its]) for idx in [0, 1]]
if weight <= w_limit: ret.append([value, we

元記事を表示

[Python]途中まで素数を求める方法[オイラー]

# はじめに
Pythonでコーディングを行ったので、備忘録として残します。
Python環境下にて、是非お使いください。

素数は、1とその数字以外に割ることができないものです。
これは、ある素数NはNはN-1の整数倍で表すことができないという意味でもあります。
この素数というのは素数係数関数(Π(x))や素数定理などの発見はあるものの、
素数を数式で表すことは現在できておりません。

現在の主流な暗号方式であるRSA暗号は、100桁以上の素数の難発見性の性質を利用しているなど、IT技術にも貢献しているこの素数ですが、
nを整数としたとき、n^2-n+41が素数であることはn=40までは成り立つようです。

今回は、コーディングとn=0~40の出力結果を以下に載せておくので、
参考までに御覧ください。
素数を詳しく知りたい方は、数学者ガウスやオイラーについて調べてみるといいでしょう。

[参考]RSA暗号とは:https://qiita.com/YutaKase6/items/cd9e26d723809dc85928

※n^2-n+41は二次関数で、n=-1のとき43、n=-2の

元記事を表示

pandasで、年のない月日のみのデータを to_datetimeしたら1990年になってしまったときの対処法

年の記載が無い、月日だけの日付データを to_datetime したら、全部1990年になってしまったので、年のデータを追加した方法を書いておきます。

## サンプルデータ
– [sample_data.csv](https://gist.githubusercontent.com/noanoa07/425e750a4d0f95e577a9ee32a5edb90e/raw/40b2d718031ba24ce996c58112fd984814889561/sample_data.csv)

|年月日|平均気温(℃)|最高気温(℃)|最低気温(℃)|
|:—-|:—-|:—-|:—-|
|12月29日|7.3|12.4|1.9|
|12月30日|6.4|12.8|2.6|
|12月31日|3.0|7.1|-1.0|
|1月1日|2.9|9.7|-3.5|
|1月2日|3.6|9.9|-2.1|
|1月3日|3.0|7.5|-1.7|
|1月4日|4.9|11.2|-0.4|

## pandasで読み込む

“`python
import pandas as pd

元記事を表示

【python3】AttributeError: partially initialized module ‘XXX’ has no attribute ‘make’への対処

## 環境
Windows 10 Home
python 3.10

## 状況
小さなコードをテスト実行中に遭遇した。
その時のコードと、実行したときのエラー内容を以下に示す。

“`gym.py
import gym

env = gym.make(‘Pendulum-v1’)
env.reset()

for i in range(20):
action = env.action_space.sample()
state, reward, done, info = env.step(action)

print(f”action:{action}, state:{state}, reward:{reward}, done:{done}”)
“`

“`
Traceback (most recent call last):
File “C:\Users\work\gym.py”, line 1, in
import gym
File “C:\Users\work\gym.py”, line 3, in

元記事を表示

Pytorchのバージョンを確認、GPUの情報をワンライナーで確認

Pytorchのバージョンを確認

“`
python3 -c “import torch; print(torch.__version__);”
“`
GPUを使えるかどうかを確認

“`
python3 -c “import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0));”
“`

元記事を表示

WSLでPythonのGUI表示をどうにかする

# WSLでGUI表示したいという話
こんな話,インターネットの海には無限に転がっている
転がっているからといってできるとは言ってないのがこの分野ですよね

以前にWSLのUbuntuからPyQt5で作ったアプリを立ち上げようとして,GUI周りで挫折したので,今回はリベンジ ~~(コマンドプロンプトはやっぱり作業しづらい)~~

## 環境
* Windows10
* WSL1(Ubuntu)
* Python3.7→3.8

## とりあえず実行しようとしてみる

GUIの基本(?)「とりあえず画面を出す」をするため,matplotlibを使ったプログラムでグラフを画面出力しようとしてみると…
エラーが出た

“`shell
WSL UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
“`

とりあえずこちらを参考にVcXsrvを導入

https://qiita.com/rhene/items/ff11c7850

元記事を表示

AWS VPCをプライベートサブネットか判定して作成するスクリプト

#普通にVPC作成すると、プライベートサブネットかどうかをバリデーションしてくれない
Amazon VPCはAWS上に構築するプライベートなネットワーク空間のことです。
ですが作成時にプライベートサブネットかどうかをバリデーションしてくれません。:weary:
意図せずパブリックなIPレンジでもVPCを作れてしまいます。
そのためプライベートサブネットか判定して作成するスクリプトを作成してみました。

python3の標準モジュールであるipaddressモジュールが凄く便利です!

# 開発環境
Python3.8.7
#実装
(IAMユーザー作成、aws configureは割愛します)
例:VPCのCIDR 172.32.0.0/24 をboto3testのNameタグで作成しようとするとき

“`python
import boto3
import ipaddress

CIDR = ‘172.32.0.0/24’

def create_vpc(CIDR):
client = boto3.client(‘ec2’)
response = client.c

元記事を表示

Python 例文集

# Python で使える例文集

自分用の備忘録として。

## API への問い合わせ

### API に問い合わせ、結果の JSON を dict 型として読み込む場合

返ってくる値は`レスポンスオブジェクト`。格納される主な属性は以下の通り。

– `status_code`: レスポンスのステータス(200など)。str 型
– `headers`: レスポンスヘッダ。dic 型
– `text`: レスポンス文字列本体。

“`py
import requests
import json

# API クエリをそのまま渡す場合
def get_malApi_response(arg):
url = ‘https://example.com/api/’
param = arg # arg = get/detail
res = requests.get(urlrl + param)
data = json.loads(res.text) # text 属性のデータを dict 型に変換

return data

# API ク

元記事を表示

Django modelformsetにはまった人

# 初めに
複数の同じformを入力する際にformsetを使用し実装を行うときにいくつかハマったので
メモを残す。

# 例:
以下のコードが今回formsetを使用するmodel, form, viewです。
内容は適当なので気にしないでください。

“`python

# model
class User(models.Model):
id = models.BigAutoField(primary_key=True)
name = models.CharField(null=False, max_length=100)

created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

# form
class UserForm(forms.ModelForm):
use_required_attribute = False

name = forms.CharField(…)

元記事を表示

FastApiで静的ファイルをマウントする

## 概要
– FastApiで静的ファイルを表示するときの備忘録
– index.htmlを自動で読み込みたければ設定が必要

## 構成
“`
.
├── main.py
└── static
├── favicon.ico
├── index.html
└── static
├── css
└── js
“`

## 静的ファイルのマウント
`StaticFiles`をimportしてdirectory指定することでマウントできます。
ただし、このままだと`/static`にアクセスしても`index.html`は表示されません。

“`python:main.py
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles

app = FastAPI()

app.mount(“/static”, StaticFiles(directory=”static”), name=”static”)
“`

### 対応方法
HTMLモー

元記事を表示

OTHERカテゴリの最新記事