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

Python3関連のことを調べてみた2022年11月18日
目次

最近傍探索による測位座標の補正および取得

# Pythonで出発点と進む距離・方位から到達点の緯度経度を計算する方法
Pythonのpyprojライブラリを使用した。pypojは地球が楕円体であることを考慮して、地理的な位置情報を使った計算ができるライブラリです.
また,出発点と方位角・距離を与えて到達点の緯度経度を計算する方法がfwdメソッドを使えば簡単に求めることができる。

fwdメソッドには引数として出発点の経度・緯度、方位角・距離を与えます。戻り値は到着点の経度・緯度・逆方位角(到着点から出発点を見た時の方位角)です。

また最近傍探索を用い座標の補正を行うにあたり緯度経度と平面直角座標の相互変換を実装した。

“`
import csv
import numpy as np
from numpy.linalg import norm
import pyproj

grs80 = pyproj.Geod(ellps=’GRS80′)
coordinate_path = “coordinate.csv”
azimuth_path = “azimuth.csv”
azimuth_data = []

def write

元記事を表示

AtCoder Beginner Contest(ABC) 275 – Pythonでのバーチャル参加結果と内容整理

# 1. 前書き
AtCoderBeginnerContest(ABC)の参加結果と内容の整理、および外部の解説記事を参考にした上で、自分なりに解法を整理していきます。
使用言語はPythonで行きます。本業ではJavaかRubyonRailsユーザーですが、計算速度の問題であったり、トレンドに乗っておくという意味でも(こちらが大きい)、Pythonに慣れていきたいと思います。

# 2. コンテスト内容
– コンテスト名
– AtCoder Beginner Contest 275
– 開催日時
– 2022/10/29(土) 21:00 – 22:40
– 実施区分
– バーチャル参加
– 2022/11/2(水)

# 3. 結果
|区分|結果|所要時間|実行時間|
|:–|:–|:–|:–|
|A問題|AC|9:42|24ms|
|B問題|AC|12:55|24ms|
|C問題|未提出|-|-|

# 4. 解説

## 4-1. A問題

### 4-1-1. 問題文
> AtCoder村にはN本の橋があり、i本目(iは1以上N以下の整

元記事を表示

Python Language – format() built-in Floating Point Rounding(浮動小数点数の端数処理 – 丸め)

Python では、他の多くの言語と同様に浮動小数点数における端数の丸めが行われます。

__15. Floating Point Arithmetic: Issues and Limitations__
https://docs.python.org/3.9/tutorial/floatingpoint.html

__The Perils of Floating Point__
https://www.lahey.com/float.htm

Python では IEEE 754 の `Round to nearest, ties to even(最近接丸め(偶数)= 偶数丸め(= 銀行家の丸め =Bankers’ Rounding ))` を採用しています。
__IEEE 754__
https://en.wikipedia.org/wiki/IEEE_754#Rounding_rules

※ decimal 等で丸めの方法を変更することも可能です。
__Rounding modes__
https://docs.python.org/3/library/decimal.htm

元記事を表示

Pythonを管理者権限で実行するためのスクリプトを作成した。

pythonを管理者権限で実行するにはショートカットを作成して、管理者権限で実行すればいい。
そのため、pythonのスクリプトのショートカットを作成するスクリプトを作成した。

# 実行環境
* windows 10 home
* python 3.9
* pip 22.0.4

# スクリプト
“`python3
pip install pywin32
pip install winshell
“`

“`python3:make_shortcut.py
import os, sys, winshell
from win32com.client import Dispatch

def main():
if len(sys.argv) != 2:
return

# スクリプトの存在確認をする
target_path = sys.argv[1]
if os.path.isfile(target_path) is False:
return

save_path = target_path + ‘

元記事を表示

CpawCTF Writeup Level 3 Q29.[Crypto] Common World (注意)

“`
Cpaw君は,以下の公開鍵を用いて暗号化された暗号文Cを受け取りました.しかしCpaw君は秘密鍵を忘れてしまいました.Cpaw君のために暗号文を解読してあげましょう.

(e, N) = (11, 2369340497431162671379990822433726318097895674820839187178326428100973633055122934745680713690552962641998544386308203526343253572523992031600526606837454217101748263231924758704973191054184356468204948649877872869418172246590734972127684806183871524778784496030081870971485995342060553188076579024938501806950916465758789165317420769511105290047834282604567133150078121126324292962573135255062070

元記事を表示

Prophetを使ってみた(異常検知)

今回はProphetを使った異常検知をやってみたいと思います。
予測検知の作業を実施した後をベースとしていますのでまだの方は、下記記事を先に見てもらえればと思います。

https://qiita.com/nw-engineer/items/d167e9e193124bacfb96

https://qiita.com/nw-engineer/items/f09a0313f065dcc5276e

また、下記サイトを参考にさせていただきました。
https://www.kaggle.com/code/vinayjaju/anomaly-detection-using-facebook-s-prophet

## 1. ライブラリインストール
まずは、追加で下記ライブラリをインストールします。
“`bash
conda install -c conda-forge altair
“`

## 2. ライブラリインポート
では、必要となるライブラリをインポートしましょう。
“`python
import pandas as pd
import numpy as np
import

元記事を表示

伝説のトレーダー集団が使った投資戦略を検証してみる

## 伝説のトレーダー集団「タートルズ」について

> ウォール街で伝説的トレーダー集団「タートルズ」―
彼らはプロの投資家による指導により、素人がトレーダーになれるかどうか?という実験の結果生まれたトレーダー集団でした。
> 【[タートルズ投資とは?そのルールと概要](https://www.ig.com/jp/trading-strategies/turtle-trading–what-is-it-and-what-are-the-rules–181207)より引用】

要するにズブズブの素人を伝説のトレーダー集団に仕立てた、すごい投資戦略ということです。
(つまりこの戦略使えば誰でも大金持ちってコト….!?!?)

今回はこのすごい投資戦略が本当に通用するのか検証したいと思います。

## どうやって検証するの?(バックテストとは?)

検証はバックテストを実施することで行います。

バックテストとは過去のデータを使って、その投資戦略がどの程度良いルールなのか(どのぐらい利益を出せるか)を検証することです。
この過程を行うことで、実際に売買する前にその買い方が本当に適切な

元記事を表示

【文字検出_備忘録】OpenCV X Python エッジ処理画像における物体検出

続き

エッジ処理あとの画像で物体検出をしようと思う。待て待て焦るんじゃない。
たくさんネット記事が出てくるので、何となくできそうな気はするけど
ちょっとここで立ち止まって、画像をちゃんと確認したい。

### エッジ処理後の画素値
早速画素値を見てみよう。
“`
y_num[0] x_num[0]:255
y_num[0] x_num[1]:255
y_num[0] x_num[2]:255
y_num[0] x_num[3]:255

y_num[186] x_num[116]:255
y_num[186] x_num[117]:0
y_num[186] x_num[118]:0
y_num[186] x_num[119]:0
y_num[186] x_num[120]:0

“`
ちゃんと、255か0になってますね。この255->0に落ちる点が特異点な気がするなー。
なんかそういうのできないかなーと思って。この2次元行列をX軸方向に一つずらして計算する方法を考えてみました。ちょっと文字では言いづらいので頑張って残しますね。
![元行列.png](https://q

元記事を表示

40代おっさんStreamlitを学ぶ②

## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## 前回の記事

## Streamlit

### Input widgets

“`python
import streamlit as st
import pandas as pd
import numpy as np

csv = pd.read_csv(‘dummy.csv’) # csv読み込み適当なの入れました

df = pd.DataFrame(csv)

if st.button(‘住所’): # ボタン
st.dataframe(df[‘住所’])

if st.checkbox(‘氏名’): # チェックボックス
st.dataframe(df[‘氏名’])

options = st.multiselect( # オプションで選択肢の中

元記事を表示

Python Language – Index & Slice

Python には様々な Data Type があり、それらの中には Index や Slice でその一部を取得したり、変更したりできるものがあります。

__3. An Informal Introduction to Python__
https://docs.python.org/3.9/tutorial/introduction.html

__5. Data Structures__
https://docs.python.org/3.9/tutorial/datastructures.html

ここでは、以下の代表的な Data Type について、使用方法の違いをご紹介します。

– String (Str)(文字列)
– List(リスト)
– Tuple(タプル)
– Set(集合)
– Dictionary (Dict)(辞書)

#### 環境
以下の Python 3.9 / Linux 環境で確認します。
“`shell
$ uname -si
Linux x86_64

$ python3.9 -V
Python 3.9.13

$ python3.9

元記事を表示

Python Language – Comprehension(内包表記)

Python では、いくつかの言語がサポートしている内包表記 (Comprehension) が使用可能です。

__5.1.3. List Comprehensions__
https://docs.python.org/3.9/tutorial/datastructures.html#list-comprehensions

__リスト内包表記__
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%B9%E3%83%88%E5%86%85%E5%8C%85%E8%A1%A8%E8%A8%98

ここでは、以下の代表的な Data Type について、簡単な使用方法をご紹介します。

– String (Str)(文字列)
– List(リスト)
– Tuple(タプル)
– Set(集合)
– Dictionary (Dict)(辞書)

#### 環境
以下の Python 3.9 / Linux 環境で確認します。
“`shell
$ uname -si
Linux x86_64

$ python3.9 -V
Python 3.9.

元記事を表示

PythonでFlaskを使ってPOSTで送られたデータの確認用

PythonでFlaskを使い、ウェブアプリを作っています。
POSTで送られたデータの確認をしたいと思い、コードを書きました。
このコードは、汎用で使えると思います。
HTMLの部分は、base.htmlで作って継承できるように書きました。

“`Python
{% extends ‘base.html’ %}
{% block head %}
データの出力
{% endblock %}
{% block content %}

キーとバリュー

キー一覧

    {% for key in user_data.keys() %}

  • {{ key }}
  • {% endfor %}

入力されたデータ

    {% for key, value in user_data.items() %}

  • {{ key }}: {{ value }}
  • {% end

元記事を表示

『サイバーセキュリティプログラミング第2版』の読書メモ (4)

ひきつづき『サイバーセキュリティプログラミング第2版』の読書メモです。

https://www.oreilly.co.jp/books/9784873119731/

4.3 章まで進みました。記載されているコードをじっくり確認しながら読み進めています。

## P86 detect 関数より

python から OpenCV を使って画像データに人の顔が含まれるかを検出する関数です。が、「ある一行」の理解につまづきました。

“`python
rects[:,2:] += rects[:,:2] # ⑤
“`

P87 の解説によると、

> … rects は (x, y, width, height) という形式であり、x, y は四角形の左下の座標、width, height は四角形の幅と高さを表す。
> ⑤に示す Python のスライス構文により上記の rects データを (x1, y1, x1+width, y1+width) ― 言い換えると (x1, y1, x2, y2) ― に変換することで、cv2.rectangle の引数として利用しやすくしている

元記事を表示

Tableau OnlineへのJWTを用いたSSO

ハロー世界。りくとんです。みんな元気にSSOしてますか?(挨拶)

この記事はTableau Onlineの埋め込みビューに対してSSOするために、2022年1月に実装された連携アプリの機能を利用して実装した記事です。
一応(あんま役に立たない)公式ヘルプ載せときますね。

◆Tableau Cloud ヘルプ – 直接信頼を使用して接続済みアプリを構成する
https://help.tableau.com/current/online/ja-jp/connected_apps_direct.htm

# 概要
・Tableau Onlineの埋め込みビューに対してSSO。
・SAML認証のIdP立てるのだるいし借りるとランニングが…。→連携アプリで解決。
・JWT発行するにはPythonかJavaのサンプルコードが載ってた。今回はPythonで実装。
・環境依存したくないからGAE上にデプロイしよう。AjaxでJWT取得してSSO。
・JWTとはなんぞやという知識は先人のQiitaを参考にしてください。

◆Qiita – 認証におけるJWTの利用について
https://qiita

元記事を表示

Webスクレイピングアプリケーションを作成。

最近は、Udemyの講座である「爆速で5つのPython Webアプリを開発」をやっている。

https://www.udemy.com/course/python-streamlit/

本日は最後のアプリケーションであるWebスクレイピングを用いた簡単なアプリケーションを作成した。
そのアプリケーションをHerokuと呼ばれるものにデプロイをして自動的に更新できるようにした。
実際にはクレカの情報が入力出来なかったので自動更新はまだ実装していない。

他に自分でアプリケーションを作成して自動更新したいようなら別のクレカで試そうと思う。
下のURLが今日の成果物です。お疲れ様でした。

https://udemy-streamlit-demo.herokuapp.com/

元記事を表示

【文字検出_備忘録】OpenCV X Python エッジ検出処理

続きをやっていきましょう。今日は2値化ファイルの画素値出力をした後、エッジ検出処理をやります。

### 画素値出力
“`
#2値化ファイルの画素値出力
test_f = open(TEST_file_path,’w’) #txtファイルを含めたパスを用意しました。

y_depth = img_gray_th_otsu.shape[0]
x_depth = img_gray_th_otsu.shape[1]

for y_num in range(y_depth):
for x_num in range(x_depth):
test_f.write(“y_num[“+str(y_num)+”] x_num[“+str(x_num)+”]:”+str(img_gray_th_otsu[y_num][x_num])+”\n”)

test_f.close()
“`

としてみると、ちゃんと0か255になっていることがわかりました。
ヒストグラムみると若干違ったのでちょっと怪しんでましたが、まぁ良さそう。

### エッジ検出
Canny法でのエッジ検出をやってみます。

元記事を表示

【文字検出_備忘録】OpenCV X Python グレースケール画像の2値化

こんにちは。続きをやりましょう。

### グレースケール化の確認
グレースケール化までやったのでそれができてるかの確認をします。
せっかくなので、ndarrayの出力も試したいなと思って、以下のコードを書きました。
“`
for y_num in range(0,5):
for x_num in range(0,5):
print(“print[“+str(y_num)+”]”+”[“+str(x_num)+”]:”+str(img_gray[y_num][x_num]))

“`
img_gray[y_num][x_num]の部分で、画素値の出力をしてます。
実行結果。
“`
print[0][0]:251
print[0][1]:251
print[0][2]:251
print[0][3]:251
print[0][4]:251
print[1][0]:251
print[1][1]:251
print[1][2]:251
print[1][3]:251
print[1][4]:251
print[2][0]:251
print[2][1]:251
print[2

元記事を表示

【文字検出_備忘録】OpenCV X Python 画像の読み込みとグレースケール化

産休にはいって、出産まであと1ヶ月切ったので、子供を産まれるまで、どこまでできるかチャレンジ。
私のスペック
・情報工学、学部卒(なのでたかが知れてる)
・とあるメーカー 設計・開発業務 5年目、主にマネジメントしかしてない
・子供1人、2歳(まだ夜泣きもするし、寝るのもへたっぴなので夜はほぼ活動してない)

いや、多分こんな文字検出なんかね、どこでも載ってるんだけど、色々やってみたいので、お勉強兼ねて少し、鈍臭くやった備忘録を書きます。
鈍臭くっていうのは、データの中身をちゃんとみたり、どうしたらAPIやライブラリを使用せずに組んでみたりするってこと。です。

# 前提条件

## 開発環境
OS macOS Monterey
ハード iMac (21.5-inch, Late 2015)
Memory 8GB

## 今までやってきたこと
・開発環境整備
 Python, OpenCVI(Numpy含む), Matlabplotlib
・エディタ SublimeText

## やりたいこと
・画像から文字検出

## 考えてるステップ
Step0 画像の読み込み
Step1

元記事を表示

ライブラリー無し自作関数 Python3 西暦 ➡ 和暦変換 関数

# 西暦 ➡ 和暦 変換 Function

“`python:main.py

import datetime

class Gengou():

def __init__(self):
pass

def Data_Set(self):
date_arr = [
{‘year’: 2019, ‘name’: ‘令和’, ‘new_Japanese_calendar’: ‘平成31年’},
{‘year’: 1986, ‘name’: ‘平成’, ‘new_Japanese_calendar’: ‘平成元年’},
{‘year’: 1926, ‘name’: ‘昭和’, ‘new_Japanese_calendar’: ‘大正15年’}
]
return date_arr

def Gengou_Print(self, now_y, r_month, date_arr):
for d_val in date

元記事を表示

天気予報APIで翌朝の降水確率を取得してLineで通知する

# 動機と目的
私は朝、会社に行くのが苦痛である。
理由は、早起きが苦手だからである。
そして通勤時の天候で(傘を持っていく/持っていかない)、(早く起きる/起きない)を決めなければならない。
例えば
(a)雨が降っているならば、傘を持って5:00に家を出て徒歩で駅に向かう。
(b)そうでないならば、傘を持たずに5:30に家を出て自転車で駅に向かう。

なので、前日20:00の天気予報で翌日の朝の天気が雨か確認し30分早く起きるかどうかを決定する。
これを自動化すること目的とする。

## 詳細
処理の流れは以下の通り。
(1) 天気予報APIで翌日の朝6-12の降水確率を取得する。
[天気予報API](https://weather.tsukumijima.net/ “天気予報API”)
(2) もし降水確率が40%以上なら、Line notifyで自分に通知する。
[PythonでLINE Notifyへ通知を送る](https://qiita.com/akeome/items/e1e0fecf2e754436afc8 “https://qiita.com/akeome/items

元記事を表示

OTHERカテゴリの最新記事