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

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

napariで選択したポイントの座標を取得して表示する

# 目的
napariで開いた画像中にPointを手動で置き、キーボードで「i」を入力したら、そのPointの座標をコンソールに表示したい。

# コード
“`get_selected_coordinate.py
import glob
import napari
import numpy as np

from skimage import io

dir_name = “./data”
file_names = glob.glob(dir_name + “/*.tif”)
stack = np.array([io.imread(file_name) for file_name in file_names])

viewer = napari.view_image(stack)
points_layer = viewer.add_points(ndim=3)

@viewer.bind_key(‘i’)
def print_coordinates(viewer):
for point in points_layer.data:
print(f”frame,

元記事を表示

ABC279回答メモ

0.はじめに
 Cまでは順調に解けましたが、D以降がどうにもなりませんでした。
 解説を見ると、Dはおぼろげな解き方はあってましたが
 実装する力が足りませんでした・・・。

1.A – wwwvvvvvv
 文字列を1文字ずつ参照し、vなら1、wなら2を加算していく感じで解けました。

 https://atcoder.jp/contests/abc279/submissions/36797012

2.B – LOOKUP
 S列を先頭から参照していき以下をチェック
  1) 現在の参照アドレス+T列の長さがS列の長さを超えている
   →これ以上調べても一致することは無いため”No”を表示して終了
  2) 現在の参照アドレスから続くT列の長さ分の文字列と
    T列を比べる
   2-1)一致した場合
    ”Yes”を表示して終了
   2-2)不一致の場合
    Continue
 文字数も少ないので十分AC頂けました。

 https://atcoder.jp/contests/abc279/submissions/36804012

3.C – RANDOM
 思

元記事を表示

[Mapデータタイプ] 5分で実装可能!!!Dictionaryを応用しヒューマンリーダブルなコードを書こう

## 概要
– 関数の中にif文で条件分岐する際に、Dictionaryを使う場合と使わない場合で比較をし、その違いを紹介する
## 目的
– PythonにおけるDictionary、関数の理解
– ヒューマンリーダブルなコードを書く意識を高める
## Dictionaryとは
– キーと値をペアで管理できるデータタイプ
“`python
dict_test = {“key”: “value”}
print(dict_test[“key”]) # キーを指定して値へアクセスできる
# “value”
“`

# 今回実装するのは自宅電話番号のバリデーション
– 市外局番が**050**で始まる場合は11桁のみを許容する。
– 市外局番がそれ以外で始まる場合は10桁のみを許容する。

## Dictionaryを使用しないケース
“`base.py
# 上にはクラスの定義とpydanticのデコレータでバリデーションを記述している
# 省略↑
def home_phone_number_local_area_code_split(self):
if sel

元記事を表示

ナノ秒まで測れる時間計測デコレータ

ナノ秒まで測れる簡単な方法が見つからなかったので作成しました。
“`python:時間計測デコレータ
import time

def proc_time(f):
def _wrapper(*args, **kwargs):
st = time.perf_counter_ns()
res = f(*args, **kwargs)
t = (time.perf_counter_ns() – st) * 0.000000001
print(f'{format(t,”.2E”)} sec’)
return res
return _wrapper
“`

“`python:実行テスト
@proc_time
def a():
pass

a()
“`

“`python:結果
7.70E-07 sec
“`
軽い関数を用意して100nsオーダーまで計測できることを確認しました。

元記事を表示

スペクトル、スペクトログラムって何だろう?(音声、音の初心者向け)

# はじめに
教授に「音声波形をスペクトルに変換する理由はなんですか?」と聞かれて答えられなかったため、自分なりにまとめてみた備忘録

# 音声波形をスペクトルに変換する理由はなんですか?
音声波形をスペクトルに変換する理由は
「人間の知覚する音に変換するため」

## 物理現象と知覚現象
音声波形は物理現象です。これは、人間に関わらず万物に同じ影響を与えるもの。
物理現象は人の知覚に影響しない現象もあります。例えば光も紫外線、赤外線を光は人間には知覚できません。しかし、数値的には存在します。
ここで対象を光から音にしてみましょう。音も物理現象で表すと、音の大きさ(デシベル)や音の高さ(ヘルツ)で数値的に表せますが人間には知覚できないレベルの音の大きさや音の高さも数値的に存在します。例えば、超音波は周波数が高すぎて人間には知覚できないものです。
さて、音声や音響解析は対象が音声が人間にどのように聞こえているのか、人間は音声をどのように聞くかが対象になります。そのことから音声波形は人がどのように知覚するかが焦点になります。この「人に聞かせる上で、人がどのように音声を認識しているのか」を表

元記事を表示

numpy配列に対応したメモ化

### メモ化デコレータ作成
メモ化については[こちら](https://qiita.com/alchemist/items/c75174c41b0bcd31ecc6)とか参照ください
Python3.8の標準ライブラリ`functools.lru_cache`によるメモ化が
numpy配列に対応していなかったので自作しました。
“`python
from numba import njit
import numpy as np
import time
“`

numpy配列に対応するために
引数を無理やりstrにキャストして辞書のキーにしています。
“`python:メモ化デコレータ
def cache(f):
c = {}
def _wrapper(*args,**kwargs):
key = ”.join([str(arg) for arg in args]) + ”.join([str(k)+str(v) for k,v in kwargs.items()])
if key not in c:

元記事を表示

マイコンボードESP32でMicroPython環境構築からSwitchbotAPI操作まで

# はじめに
WiFiモジュールを搭載したマイコンモジュールの一つにESP32があります。
マイコン初心者の私が備忘録を兼ねて、Micropython環境の構築からSwitchbotAPIを操作するところまで書きます。
以下の流れです。
1. ESP32 PC接続設定
2. MicroPython環境構築
3. ESP32 WiFi接続
4. SwitchbotAPI操作

# 参考
MicroPython環境構築の参考にしました。
[Zenn: Thonnyで、ESP32 – MicroPython環境を構築するよ](https://zenn.dev/kotaproj/articles/d969fb39100da443f41f)

ネットワーク接続の参考にしました。ESP8266とありますが、ESP32でも使えるようです。
[MicroPython: ESP8266 用クイックリファレンス](https://micropython-docs-ja.readthedocs.io/ja/latest/esp8266/quickref.html#networking)

Switchbot

元記事を表示

Network Time Protocol対応で調整不要のLEDデジタル時計? (Raspberry Piの内部時計を7セグLED表示)

![led.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986568/a79097d0-5d98-21ac-bb17-2aa88c54b8a8.gif)
– 最近の卓上時計はLCDばかりなので寝てる時はライトのボタンを押さないと暗闇では見えないし、電波時計(GPS時計とかもたぶん同じ)でも電波が受信し辛い鉄筋コンクリート建物内部とかでは時間調整がほとんど役に立ちません。あとできれば4桁じゃなくて秒表示のある6桁の時計が欲しい。
– という訳で手元にあったRaspberry Piを使って時計(というか正確にはRasPi内部時計のレトロっぽい7セグLED表示板ですが)をお手軽に作ってみた、という話です。(5年ぐらい前なのでPythonは2です) Lチカの次のちょっと実用的な2ndステップ、という感じでしょうか。
– LEDは秋月電子の[7セグメントLEDシリアルドライバキット](https://akizukidenshi.com/catalog/g/gK-10360/)が[74HC595搭載でラッチもし

元記事を表示

数字当て推理ゲーム(Hit&Blow)を解くプログラムを考えてみる

# はじめに
Hit&Blowの問題を解くようなプログラムを作っていきます。
## Hit&Blowとは
– お題は0~9までの数字から異なる数字を決められた桁数だけ選択される
– 回答者は0~9までの数字から異なる数字を決められた桁数だけ選択し、
Hit&Blowの数からお題の数字を考える
– Hit:同じ桁数に同じ数字がある数
– Blow:同じ桁数にはないが別の桁数に同じ数字がある数
– 回答を繰り返しお題の数字を当てるゲーム

# Hit&Blowのプログラムを作成する
Hit&Blowのプログラムについては下記ページを参考にさせていただきました。

https://qiita.com/santarou6/items/1af5a03534e2d8ab0b52

お題の数字は自分で決められるようにし、桁数も可変式にしました。
“`python:
def calculation(k,q):
size=len(q)
hit = 0
blow = 0
for num in range(size):
if(q[num] == k[num]):

元記事を表示

傾斜量の算出方法

土木分野では,地形解析と呼ばれる解析あります.具体的には,標高から傾斜量や曲率などの地形的情報を算出することであり,これらの地形的情報を元に,斜面防災やハザードマップ作成などの取り組みが行われています.今回は,標高から傾斜量を算出する方法を紹介します.最後には,傾斜量を計算するためのpyhonのプログラムも掲載しています.

# 1. 傾斜量とは
ある地点における傾斜(水平に対する角度)を示す数値です.文献によっては斜面勾配と記載されている場合もあります.傾斜量をQGISやArgGISなどのGISソフトで可視化した図を傾斜量図と呼びます.傾斜量図については,国土地理院の説明が非常に分かりやすいです.この記事では,この傾斜量図を作成ために必要な傾斜量の計算方法を紹介します.

https://www.gsi.go.jp/bousaichiri/slopemap.html

# 2. 傾斜量の計算方法
傾斜量の計算方法は,これまでに様々提案されています.以下は,傾斜量の計算方法を記載している文献です.今回は佐藤らの論文に記載されている計算方法で傾斜量を算出してみます.

+ 佐藤丈晴,中島

元記事を表示

【前半】雑魚のためのSageMaker入門(文章分類API作ってみた)

# はじめに

開発案件でSageMakerを味見する話があったのでやってみた記事(の前半)です.
※2022年11月25日現在の内容です.

この記事ではSageMakerはいじりません.

『学習から行う』みたいな記事は見つけられたのですが,『推論だけやる』という記事は見つけられなかったので書いています.

よって,対象読者はこのあたりの条件を満たす人になるかと.
– 学習はローカル(というかAWS以外)でやる
– 推論のAPIを作りたい
– バックエンドのインフラはお任せにしたい(フロントエンドはさておき)
~~チュートリアル読めば書いてあったのかもしれない内容な気もしています.知りませんが.~~

誰かの技術ブログをサクッと再現できないたびに無力感を感じるので,タイトルに『雑魚のための』とつけました.

ソースコードは[Github](https://github.com/akh1r0ck/sagemaker_challenge)にあげてあります.
SageMakerだけいじりたい人はクローンして次の記事から読んだらいいと思います.
また前提条件としてDocker

元記事を表示

NumPyの軸(axis)について

ディープラーニングの根幹ともいえるPythonのNumPyですが、多次元配列を把握するのはややもすると難しく感じられます。特に軸(axis)については混乱することがあります。3次元までは何とか空間的にイメージできますが、4次元以降となると難しくなります。物理学とかでテンソルを学んだ場合はそうではないのかもしれませんが、機械学習で初めてテンソルに出会った人(私)にとってはそうでしょう。この記事は知っている人にとっては、当たり前のことかもしれませんが、自分の備忘録としても残しておきたいと思います。

np.sumを例に軸のイメージをつかみます。直感的な理解としては以下のブログが役立ちます。
[NumPyの軸(axis)と次元数(ndim)とは何を意味するのか](https://deepage.net/features/numpy-axis.html)

“`python:
b = array([[[0, 1],
[2, 3],
[4, 5]],

[[0, 1],
[2, 3],

元記事を表示

Flask スクレイピングアプリ最終章〜結果を表示する〜

https://qiita.com/sasao-genmaicha/items/0234f7ac12bbd54c2602

前回の記事?ではAPIを使って欲しい情報を取得したので今回はブラウザ上にそれらを表示したいと思います。

https://app-rank-git1.herokuapp.com/

?こちらは完成したアプリです。GitHubでスター数が多い人気リポジトリーTOP5をスクレイピングしてます。

まずはresults.html

“`python:result.html
{% extends ‘base.html’ %}

{% block body %}

{% for result in results %}

{{ result }}

{% endfor %}

元記事を表示

全体観測分散型マルコフ過程 (Decentralized-GOMDPs) の実験

### 筆者について
大阪の大学院生です。教師あり学習にずっぽり触れてきましたが、最近強化学習、特にマルチエージェントの話について興味をもって、いろいろ弄っています。まだまだ未熟者なので、玄人の方はお手柔らかにお願いします。

# 概要
マルチエージェント学習、つまり複数の個体が対象である分散型システムについての強化学習において、[分散型部分観測マルコフ仮定(Decentralized POMDPs)](https://en.wikipedia.org/wiki/Decentralized_partially_observable_Markov_decision_process#:~:text=The%20decentralized%20partially%20observable%20Markov%20decision%20process%20%28Dec-POMDP%29,communication%20%28i.e.%2C%20costly%2C%20delayed%2C%20noisy%20or%20nonexistent%20communication%29.)というものがあ

元記事を表示

日本株のバックテスト用データ取得

日本株のバックテスト用データはどうしていますか。
いろんな銘柄でバックテストしたいと思うのですが、これまでなかなかいいデータが見つかりませんでした。

* 日足用
* 全銘柄
* 修正株価

このあたりの要件を満たすデータを探していたら、やっと見つかりました。[Stooq](https://stooq.com)のデータです。
APIで一つの銘柄のデータを取得する方法はよく紹介されていますが、今回は一度で全銘柄のデータを取得する方法です。

実はこのStooqは時系列データを[ここ](https://stooq.com/db/h/)で公開しています。
JapanのASCIIデータ(200MBくらい)を選択すると、画面に表示される文字列を入力するウィンドウがでます。正しく入力できると、ダウンロードできるようになります。
今回は日々自動でデータを取得することが目的ではないので、問題なしです。

これだけではただのデータ紹介になるので、ZIPデータを開いてbacktesting.pyでグラフ化します。

まずデータをpandasで読み込む関数を作ります。backtesting.pyに渡せるよう

元記事を表示

Windows10にPXEブートサーバをたてる

# 0. 概要

テクニカルサポート業務に就いている中野と申します。
同じ部署に中野が二人いるので、中野(明)と下の名前も付けて呼び分けられています。

本記事では、Python製のPXEブートサーバ PyPXEを使って、Windows 10 PCをPXEブートサーバにします。

作業は以下の流れです。

1. Pythonをインストールする
1. PyPXEをインストールする
1. PyPXEを起動する

# 1. Pythonをインストールする
PyPXEを実行できるようにするため、Pythonをインストールします。
本記事ではPythonインストールにembeddable packageを使用します。
embeddable packageはレジストリやPATHを書き換えないので、Windows環境への影響を小さくできます。

embeddable packageについては以下の記事を参考にさせていただきました。

https://qiita.com/mm_sys/items/1fd3a50a930dac3db299

## Python embeddable packageをダ

元記事を表示

[SQLAlchemy] 神速の爆裂理解!!!コンソールログ上のパラメータをマスキングする方法!!!

## 実装の目的
– AWSのCloudWatchなどのコンソールログ上でお客様の個人情報を開発者の目に触れるのを防ぐため
– SQLAlchemyではデフォルトでマスキングの設定はされていないため
## 説明しないこと
– DBへの接続方法
## DBセッティングファイルに以下の記述を追記
↓最初のログはこんな感じ
“`
2022-11-02 16:37:03,292 INFO sqlalchemy.engine.Engine [generated in 0.00014s] (2151, 1, 99, ‘20220101’, 1, 20)
INFO:sqlalchemy.engine.Engine:[generated in 0.00014s] (2151, 1, 99, ‘20220101’, 1, 20)
2022-11-02 16:37:03,297 INFO sqlalchemy.engine.Engine INSERT INTO workplace (customer_id, company_name, kana_company_name, business_t

元記事を表示

Wordファイルからgrepのように抽出する

# 概要
Word(docx)ファイルから、指定の単語を含む行(パラグラフ)を抜き出して列挙します。
単にWordの機能で検索するよりは、ある単語がどういうところで使われているか、をまとめて取り出すのに便利かと思います。

cf. python wordgrep.py -f “path/filename.docx” -w “ほげほげ”
単語の指定には、正規表現が使えます。
PyInstaller で、windows 用実行ファイルを作成してあります(Windows10 検証済み)

# 仕組み
基本的な仕組みは簡単で、python-docx でWordファイルを読み込むと、1パラグラフごとに取得できるので、それを配列に入れて、その配列を正規表現でフィルタ(match)させるだけです。

# コード
## コマンドラインからの引数の設定など
“`python
from docx import Document
import sys
import argparse
import os
import re

# outline –help
parser = argparse.Argume

元記事を表示

PythonでSubversionのファイルやフォルダ情報をCSV形式で保存する

# pysvnについて
– Subversionのpython用のAPIで、svnをインストールする必要はありません。
– svnをラップしているそうなので、機能は一緒だと思います。
– https://github.com/dsoprea/PySvn
– https://pysvn.sourceforge.io/Docs/pysvn_prog_ref.html

# pysvnのインストールについて
### Windows環境
– インストーラーでインストールできます
– https://pysvn.sourceforge.io/downloads.html
### Mac環境
– インストーラーはありますが、py39-python_org-pysvn-svn1142-1.9.18-2091-x86_64.dmgをインストールしようとしたところエラーになりました。Pythonのパスが「/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages」で固定されており、pyenvを使

元記事を表示

OTHERカテゴリの最新記事