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

Python関連のことを調べてみた2023年07月29日
目次

Django Form操作(自分用メモ)

## Django自分用メモになります
今回はFormの操作についてまとめます

## 開発環境
OS:mac
エディタ:vscode
python:3.10.9
django:4.1.0

### フォーム作成の基本的な流れ
“`python:
#forms.py
class UserForm(forms.Form): #forms.Formを継承してフォームで入力したい項目を設定する
name = forms.CharField(label=’your name’ max_length=100)
age = forms.IntegerField()
mail = forms.EmailField()

#views.py
form = UserForm() #インスタンスを作成して初期化
return render(request,’template_path’,context={‘form’:form} #contextとしてテンプレートに渡す

#テンプレートへの記述

サイトからのスクレイピング(メモ)

Excelファイルに記載のある指定サイトURLから
指定情報(今回はメールアドレス)をスクレイピングしてくるcoding memo
※未完成版
※精度向上させるため修正予定

“`python:qiita.py
# ライブラリ
import pandas as pd
import requests
from bs4 import BeautifulSoup
import re
from urllib.parse import urljoin
import concurrent.futures
import time

def extract_email_addresses_from_page(url):
“””
サイトからメールアドレスを取得する関数
“””
try:
response = requests.get(url)
response.raise_for_status()
soup = BeautifulSoup(response.content, ‘html.parser’)
t

元記事を表示

【Ubuntu】NVIDIAドライバでブラックアウトした時の対処

# Introduction

先日メインで使っていたミニPCがクラッシュし、余ったパーツを流用して自作PCを組みました。
ショックが大きかった(現在返品対応中)ですが、GPUを導入してローカルでも機械学習を回せるようになったのでPytorchでGPU環境を構築しました。

まず`NVIDIAドライバ`をインストールしてreboot、ロック解除すると…

![pcsp015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3292052/af858af9-0969-6e83-73c2-953a3407b34a.png)

画面遷移が…

![pcsp015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3292052/af858af9-0969-6e83-73c2-953a3407b34a.png)

されない!
ブラックアウト!

似たような状況でお急ぎの方のために結論を書きますが、`CUDA Toolkit`だ

元記事を表示

【時系列予測 – 実践編】LSTMを使用したマグニチュード予測

# はじめに
地震の加速度波形を利用して、何か地学的な情報を推測することはできないか。

ということで、今回はLSTMを利用した地震波形の学習とマグニチュードの一の位を予測する方法について解説します。

今後はより多くの説明変数を地学的視点で探っていき、他の機械学習モデルなども組み合わせて精度を高めていくことを検討しています。
最終的には気象庁のデータを組み合わせて津波の遡上高を推測することが目標です。

また、今回は一連の実装方法の解説と動作確認がメインのため、深層学習において必要な細かい概念については別の記事で紹介します。

# 開発環境
Google Colabを使用します。

# データ作成
防災科学研究所の強振観測網k-netのデータを使用します。

1. データをダウンロードするには以下からユーザ登録が必要です。
https://hinetwww11.bosai.go.jp/nied/registration/?LANG=ja

2. ユーザ登録が完了したら、
以下のページに移動
https://www.kyoshin.bosai.go.jp/kyoshin
→「ダウンロー

元記事を表示

Python ndarray型とは①

numpyではnp.ndarrayという配列が用意されています。
これはN次元配列を扱うためのクラスであり、英語にするとN-dimension arrayとなり、ここからndarrayとなっていると考えられます。

配列を作るには、配列名 = np.array(リスト or タプル)の形で記述します。
まずは、一回どういうものか見てみましょう。
“`
import numpy as np
array1 = np.array([1,2,3]) #[1,2,3]→(1,2,3)でもok
array1
“`
そうすると、
“`
array([1, 2, 3])
“`
と返ってきます。
“`
print(array1)
“`
上記のように、print()関数で出力すると、要素がカンマではなく、下記のように半角空白区切りで表示されます。
“`
[1 2 3]
“`
もちろん既にあるリストをnp.array()関数を使って、np.ndarrayに変換することもできます。
“`
a = [4,5,6]
array2 = np.array(a)
print(array2)
“`
`

元記事を表示

中心差分を用いた接線の交点の求め方とPythonのライブラリであるmatplotlibによる可視化

# はじめに
**様々な関数の任意の2点の接線の交点を求めると面白そう**だったので、2つの接線の交点のx座標とy座標の式を求めました。
また、Pythonのライブラリである**matplotlib**を用いて**関数のグラフ、任意の2点を通る2つの接線、2つの接線の交点**を描画しました。

# 実行環境
実行環境は次の通りです。
– windows10
– Python 3.10.5
– matplotlib 3.6.1

# 接線の交点の座標の求め方
微分係数を用いた接線の公式は、任意の$x$座標を$a$とし関数を$f(x)$とすると$x$座標を通る$y$座標は$f(a)$と表せます。
また微分係数を$f'(x)$とし、これを用いると任意の点での接線の傾きを求められ$x=a$での傾きは$f'(a)$と表せます。
これらの値から$x=a$での接線は、以下のように表せます。

“`math
y-f(a)=f'(a)(x-a) \label{a}\tag{1}
“`

ここで、新たに任意の$x$座標を$b$とし上記と同様に考えると、接線は以下のように表せます。

“`math
y

元記事を表示

ソフトマックス回帰を実装する

# ソフトマックス回帰(実装編)

ソフトマックス回帰をpythonの数値計算ライブラリであるnumpyを用いて実装していきます.

まずは後で使うので,numpyのインポートとsoftmax関数とlog関数を定義しておきます.

“`python
import numpy as np
def np_log(x):
“””
log関数のオーバーフローを防ぐ実装,clipで値を制限
“””
return np.log(np.clip(x, 1e-10, 1e+10))

def softmax(x, axis=1):
# expのoverflowを防ぐ,定数項を引いても値は変わらない
# keepdims: 次元を合わせる,max関数を使うと次元が減る(shapeが変わる)のでそれを避ける.
x -= x.max(axis, keepdims=True)
x_exp = np.exp(x)
return x_exp / x_exp.sum(axis, keepdims=True)
“`

というわけでsoftma

元記事を表示

【FastAPI】Pydanticを使ってバリデーション:none is not an allowed valueエラーの解決方法

# 概要
FastAPIでは`Pydantic`というライブラリがあり、データのバリデーションを簡単に行うことができます。今回は、その`Pydantic`を利用している実装中に`none is not an allowed value`というエラーに遭遇したのでその解決方法を紹介します。

## レスポンスが成功するサンプルコード

“`py
from typing import Any, Optional, Union
from pydantic import BaseModel

class ResultResponse(BaseModel):
request_id: Optional[str] = None
status: int = ”
msg: str = ”
info: Optional[Union[int, str]]
flag: Optional[Any] = None

print(f”ResultResponse: {ResultResponse}, type: {type(ResultResponse)}”)
# Re

元記事を表示

三角関数の式を簡単にせよ 「2017青森公立大学前期 」をChatGPTとMathematicaとWolframAlphaとsympyでやってみたい。

# オリジナル

探しています。

上と同じです。大学入試数学問題集成>経営経済学部【1】テキスト

https://mathexamtest.web.fc2.com/2017/201711051/2017110510100.html#top-0103

# xxxx ChatGPT で(できませんでした。) xxx
“`
次の式を簡単にせよ.
(cos⁡θ^2+sinθ^2)^3-(cosθ^6+sin⁡θ^6)
(2(cosθ^6+sinθ^6)+1)/3(cosθ^4+sinθ^4)
“`
次の式を簡単にしましょう。….
“`
(cos⁡θ**2+sinθ**2)**3-(cosθ**6+sin⁡θ**6)
“`
“`
(cos(⁡θ)**2+sin(θ)**2)**3-(cos(θ)**6+sin(⁡θ)**6)
“`

# Mathematicaで
“`
In
(Cos[\[Theta]]^2 + Sin[\[Theta]]^2)^3 – (Cos[\[Theta]]^6 +
Sin[\[Theta]]^6)
Simplify[%]
(2 (C

元記事を表示

7セグをデジタル時計にするPythonコード

## 1. はじめに

本記事では、弊社のAD7SGPR USBコンパクト7セグディスプレイ「Nanapo」をデジタル時計として使用するためのPythonを公開します。社内の人間がコーディングしてくれました。

AD7SGPRは、シリアル通信で文字列を送るだけで値を表示できる7セグメントディスプレイです。そのためシリアル通信可能なWEBアプリやターミナルソフトから制御が可能です。
あまりハードのことを考えずに7セグの制御が可能です。
AD7SGPR接続系統図

## 2. 必要なモジュール

今回使用するPythonのモジュールは以下の2つです。

– `serial`: シリアル通信を行うためのモジュールです。
– `time`: 時刻を取得・制御するためのモジュールです。

これらは標準のPythonライブラリに含ま

元記事を表示

【ChatGPTに聞く】PythonでOpenAI API使って質問に返答できる簡単なアプリを作成してみた

# はじめに
今回はPythonを使用してOpenAI APIを活用した質問応答アプリを作成していきます。また、アプリのコードを今話題のChatGPTに質問してコードを書いていきたいと思います。

# 使用環境
動作環境によってはうまく動作してくれない可能性があるので、
念のため、動作環境を以下に記載します。
・Windows11
・Python 3.10.7

Pythonのバージョン確認は、ターミナルで以下のコマンドを実行します。
“`bash
python –version
“`

# OpenAI APIキーの取得

では、さっそくAPIキーの取得をしていきます。
以下のURLからOpenAIのサイトにアクセスします。

https://platform.openai.com/overview

OpenAIにサインアップします。
登録するメールアドレスを「Email address」に入力して「Continue」をクリックします。
![Screenshot-2023_03_10-23_38_26.png](https://qiita-image-store.s3.

元記事を表示

GitHub Actions で pytest の失敗箇所をコード中にインライン表示する

GitHub Actions にはテストなどの実行結果を、コード上にアノテーションされた形で表示する機能があります。Node.js などでは自動で行われることがあるためご存知の方も多いかもしれませんが、Pythonでも上手く活用できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/95370/047d9217-6cc5-2d14-446b-e257a0fa4fb4.png)
## pytest の結果をコード上に表示する

実は Pytest が公式にそのためのプラグインを提供しています。これをインストールした状態で GitHub Actions で pytest を実行するだけで使えます。

https://github.com/pytest-dev/pytest-github-actions-annotate-failures

以下のようにインストールしておけばいいでしょう。

“`bash
# pip でインストールする場合
pip install pytest-githu

元記事を表示

【google colaboratory】入門:機械学習の基礎と簡単なモデルの作成

## google colaboratory入門:機械学習の基礎と簡単なモデルの作成

こんにちは。今回は、google colaboratoryについて初心者エンジニアに向けて、機械学習の基礎と簡単なモデルの作成方法についてご紹介します。google colaboratory(以下、colab)は、ブラウザ上でpythonプログラムを実行し、機械学習のモデルを構築・実行するための環境です。また、colabはクラウド上で動作するため、自分のローカルマシンのスペックやgpuの有無に制約されず、高速な処理を行うことができます。

機械学習についての基礎知識やpythonの基本的な知識を持っている方を対象に、colabの基本的な使い方や機械学習モデルの作成方法を解説します。以下の手順に従ってcolabでの機械学習の基礎を学び、簡単なモデルを作成してみましょう。

## 機械学習の概要
機械学習は、コンピュータがデータから自動的に学習し、予測モデルや分類モデルを構築する手法です。データからパターンや関係性を見つけ出し、未知のデータに対して意思決定を行うために利用されます。機械学習は、大量のデー

元記事を表示

【google colaboratory】入門:データの読み込みと前処理の基本

## 【google colaboratory】入門:データの読み込みと前処理の基本

こんにちは。今回は、google colaboratoryについて初心者エンジニアに向けて、データの読み込みと前処理の基本について解説します。

## データの種類:csv、excel、json、sqlなど

データの種類として、主に以下の形式がよく使われます。

– csv(comma-separated values):カンマで区切られたテキスト形式データ
– excel(.xlsx、.xls):microsoft excelのスプレッドシート形式データ
– json(javascript object notation):キーと値のペアでデータを表す軽量なデータ交換フォーマット
– sql(structured query language):データベースへの問い合わせや操作をするための言語

それぞれのデータ形式には、データのフォーマットや表現方法が異なるため、読み込みや前処理の方法も異なります。

## データの読み込み方法:pandasを使ったデータ読み込み

データを読み込むためには、

元記事を表示

なぜ人々がPythonを直接実行する代わりにLangChainのPythonエージェントを好むのでしょうか?

LangChainのPythonエージェントを直接のPython実行に対して選ぶ人々がいくつかの主な理由があるかもしれません:

1.便利さ – Pythonエージェントは、スクリプトやファイルの設定などをせずに、Pythonコードを対話的な形式で実行し、結果を得る簡単な方法を提供します。LangChainがコードの実行を裏で処理します。
例えば、Pythonで100に最も近い素数を見つけるコードは次のようになります。
“`
from sympy import sieve, prime

def closestprime(n):
if n <= 2: return 2 p, q = (prime(j) for j in sieve.search(n)) return p if n*n <= p*q else q closestprime(100) ``` 一方、ユーザーはLangChainのPythonエージェントを使えば、Pythonコードを容易に実行できます。 ``` # Load env files load_dot

元記事を表示

Python でパッケージを開発して配布する標準的な方法 2023 年編

[Python でパッケージを開発して配布する標準的な方法 – Qiita](https://qiita.com/propella/items/803923b2ff02482242cd) の更新版です。`setup.py` の代わりに `pyproject.toml` というファイルが使われるようになった所が大きな変更点です。

Python コマンドが入っている前提で始めます。ここでは開発中のプロジェクトをインストールできる editable installs という機能を使うので、この機能が入った pip 21.3 以降がインストールされている事をご確認ください。

“`shell
$ python –version
Python 3.7.17
$ pip –version
pip 23.0.1 from .pyenv/versions/3.7.17/lib/python3.7/site-packages/pip (python 3.7)
“`

## 仮想環境の作成

まず環境が混ざらないように [12. 仮想環境とパッケージ — Python 3.11.4 ドキュメント

元記事を表示

animation.FuncAnimationでmp4動画の作成がうまくいかなかった際の対処法

### 問題
PCを新しくしたので、ImageMagickの最新版を入れて、matplotlib.animation.FuncAnimationでグラフを動かそうとしたら問題が起きましあ。
以下のように、毎回のフレームで画像サイズが変わってしまいます。この点を解決したいです。
gifで作成すると以下のように正常に出力されます。
![output.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2183108/e247e46e-cdaa-f586-5734-05cfac11427b.gif)

しかし、mp4で作成すると最初の1枚目は通常に出力されますが、2枚目からは拡大された画像が出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2183108/b684e9f7-1888-5a59-32d6-4679ec2e9764.png)
*mp4の1枚目の画像*
![image.png](https://

元記事を表示

「全球及び日本域気候予測データ」創生・統合プログラム5km格子NHRCM日本域気候予測データの投影パラメータを同定する

## はじめに

「全球及び日本域気候予測データ」創生・統合プログラム5km格子NHRCM日本域気候予測データをラスタ化する際の投影パラメータを同定しました。

データの入手とマップ化の記事はこちら。

https://cci-labo.hateblo.jp/entry/2023/07/26/084301

データ自体はGRIB2形式で提供されており、うまく設定すればそのままQGISで表示できるのですが、このデータには投影パラメータが設定されていないようで、そのままQGISに読み込むと、

![QGIS_raw_data.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3511025/1dad41e0-4e36-1982-ee1a-51af4d56a8b6.jpeg)

一応読み込むことはできますが、このままでは日本列島の位置が合いません。

そこで、「日本域気候予測データ-格子点データ」5㎞版の時と同様に、投影パラメータを同定しました。

## モデル格子点情報の入手

気候予測データセット(DS202

元記事を表示

Jinjaテンプレートから自作関数を呼び出す

ご閲覧ありがとうございます。オレンジ羽のlibra189です。
FlaskのJinjaテンプレートでFlask側で定義した自作関数を呼び出したいと思ったのですが、少し面倒だったので記録として残しておきます。

# 検証環境

| 環境 | バージョン |
| — | — |
| OS | MacOS 12.3 |
| Python | 3.9.6 |
| Flask | 2.0.2 |
| Jinja | 3.1.1 |

# 解決したい問題

例えば、Flaskで動的に画面に値を表示したい時、Jinjaにはそのような関数は用意されていないため、一般的にはテンプレート呼び出し時に結果を引き渡す必要があります

コード例

“`python:app.py
from flask import Flask, render_template

app = Flask(__name__)

def get_host_name():
return “Qiitan”

@app.route(“/”)
def root():
return render_template(“root.ht

元記事を表示

#0007 pythonのparserとは。

## はじめに
– 開発中の日付データをtimestampへ変換するためにparser関数を利用した。
– あまり馴染みがなかったため、調べてみた。

## parseとは
– まず英単語としての`parse`とは「解析する。分割する」という意味。
– 語源は、古フランス語のpart「分け前、部分…」、ラテン語partem(主格はpars)「一部、一片…」など。

[参考](https://www.etymonline.com/jp/word/parse#:~:text=13%E4%B8%96%E7%B4%80%E4%B8%AD%E9%A0%83%E3%80%81%E3%80%8C%E5%88%86%E5%89%B2%E3%80%81,%E3%81%A8%E9%96%A2%E9%80%A3%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82)

## parserを使った日付の変換
– parserについては述べると膨大になりそうなため、今回は仕事で用いた「日付の変換」のみを扱いたいと思います。
– parse関数を利用し

元記事を表示

OTHERカテゴリの最新記事