- 1. napariで選択したポイントの座標を取得して表示する
- 2. ABC279回答メモ
- 3. [Mapデータタイプ] 5分で実装可能!!!Dictionaryを応用しヒューマンリーダブルなコードを書こう
- 4. ナノ秒まで測れる時間計測デコレータ
- 5. スペクトル、スペクトログラムって何だろう?(音声、音の初心者向け)
- 6. numpy配列に対応したメモ化
- 7. マイコンボードESP32でMicroPython環境構築からSwitchbotAPI操作まで
- 8. Network Time Protocol対応で調整不要のLEDデジタル時計? (Raspberry Piの内部時計を7セグLED表示)
- 9. 数字当て推理ゲーム(Hit&Blow)を解くプログラムを考えてみる
- 10. 傾斜量の算出方法
- 11. 【前半】雑魚のためのSageMaker入門(文章分類API作ってみた)
- 12. NumPyの軸(axis)について
- 13. Flask スクレイピングアプリ最終章〜結果を表示する〜
- 14. {{ result }}
- 15. napariで連番付きtif画像を開きたい
- 16. 全体観測分散型マルコフ過程 (Decentralized-GOMDPs) の実験
- 17. 日本株のバックテスト用データ取得
- 18. Windows10にPXEブートサーバをたてる
- 19. [SQLAlchemy] 神速の爆裂理解!!!コンソールログ上のパラメータをマスキングする方法!!!
- 20. Wordファイルからgrepのように抽出する
- 21. PythonでSubversionのファイルやフォルダ情報をCSV形式で保存する
napariで選択したポイントの座標を取得して表示する
# 目的
napariで開いた画像中にPointを手動で置き、キーボードで「i」を入力したら、そのPointの座標をコンソールに表示したい。# コード
“`get_selected_coordinate.py
import glob
import napari
import numpy as npfrom 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 timedef 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():
passa()
“`“`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 %}
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた