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

Python関連のことを調べてみた2022年10月16日
目次

Pythonのリスト、タプルについて

# はじめに
複数の値を扱えるのは分かる。違いはちゃんと説明できない。
なんとなくでも説明できるレベルになりたいのでまとめた。

# リスト(list)
リストは要素(中身)の挿入と削除ができる。
インデックス番号で要素にアクセスできる。

## 初期化
“`python:test.py
# 初期化
mylist=[]
print(f’mylistの形式: {type(mylist)}’)
print(f’mylistの中身: {mylist}’)“`
“`
↓実行結果
“`
# python test.py
mylistの形式:
mylistの中身: []
“`
`mylist=[]`で行っている初期化は、`mylist=list()`とも記述できる。
### 初期化時の注意
“`python:test.py
# 初期化
mylist = list(“MY LIST”)
print(f’リスト: {mylist}’)
“`
↓実行結果
“`
# python test.py
リスト: [‘M’, ‘Y’, ‘ ‘, ‘L’, ‘I’,

元記事を表示

AtCoderで水色になったのでそれまでを振り返る

2022年3月くらいに「緑コーダくらいやってみるか」と思いはじめました。なぜか惰性で続けて、無事水色コーダになりましたので、そこまでに考えたことを書いときます。忘れるからね。

![スクリーンショット 2022-10-16 9.33.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14365/05208840-553e-50ba-517f-147e1798d9c2.png)

# 前提(私のこと)

AtCoderのノウハウみたいな話をみたいだけなら、ここはスキップできます

## 書き手の背景とやってた目的

私はアラフォー。今でいうとEngineering Managerとか、どちらかというと管理職のロールが多いです。普段プログラムあんまり書かないので、逆説的に基本的な理解度を底上げする意義があるかな、と考えた次第でした。特にデータサイエンティストとかと計算量の会話はすることがあります。

大学時代にCS系の学部にいたので、自分を素人と言うのは間違いなく無理があります。ただ、在学中は、ICPCの

元記事を表示

ABC273メモ

0.はじめに
 Cまではそこそこの歯ごたえで溶けましたが、D以降は処理時間を
 減らす工夫をする前に時間切れといった感じでした。

1.A – A Recursive Function
 階乗を求める問題かなと思いつつ、素直にN回のfor文を作成。
 ところがうまくいかずWhile文にしてもNG。
 よく見たら”*=”を使っているのに、=の後にも元の変数を入れているという
 凡ミスをしてて変に時間を食ってしまいました。

 https://atcoder.jp/contests/abc273/submissions/35667109

2.B – Broken Rounding
 最初にググったらpythonにround関数があると知り、それを軸に実装。
 ところが、さらに調べるとうまく四捨五入できないことを知り、やり直し。

 実装内容
 1)iを1~Kまで回す
  2)変数chkに10のi乗をセット
    i=1の時、chk=10
  3)変数chk2に10のi-1乗に5をかけたものをセット
    i=1の時、chk=5
  4)変数mXにXをchkで割った余りをセット
   

元記事を表示

Pythonでハッシュ化を試してみる

# 事前知識

## 暗号化とハッシュ化の違い
データをもとに戻せるか戻せないかの違い。
暗号化はデータを元に戻せるが、ハッシュ化は元に戻せない。

## ハッシュ化
同一データから変換されたハッシュ値は、常に同一の値になる。
パスワード一致確認や、データの改ざん検知に使われる。
SHA-2(SHA-256)がよく使われている。
よく使われてる気がするんだけどMD5は脆弱性があるので使わない方がいいみたい。
今回メインで説明するのはこっち。

## 暗号化
データを第三者に盗み見られても簡単には読めない状態にしておくこと。
暗号化にも復号化にも同じキーを使う共通鍵暗号方式や、暗号化と復号化で異なるキーを使う公開鍵暗号方式がある。
共通鍵暗号方式と公開鍵暗号方式を組み合わせたハイブリッド方式という手法もあり、ウェブページのHTTPS化(SSL/TLS)で用いられてる。

# ハッシュ化させてみる
hashlibというモジュールを使って暗号化します。

“`python:test.py
import hashlib

# 平文
message = ‘Python’

# SHA-256に

元記事を表示

自分が保有する画像で画像分類Model作成してみた(初心者

きっかけ

TensorflowのDocumentからMnistを使い画像分類するコードを書いていた。

けれど事前に用意された画像を使って画像分類するのではなく、
自分が持つ画像で画像分類してみたいと思った。

僕はまだ機械学習について理解が浅いので「とりあえずやってみる」で進めました。
ツッコミどころ満載かと思いますが少しづつ理解を深めていこうと思います。

事前準備 / 概要

今回は猫ちゃんとコップを画像分類するModelを作成しようと思います。

以下のように編集した合計130枚ほどの猫ちゃんとコップの画像を用意。
・猫ちゃんの画像名は’cat’が含まれるものとする
・コップの画像名は’cup’が含まれるものとする
・Grayscale (opencvで加工)
・サイズ : 200 x 200 (opencvで加工)

この画像を用いて、最後猫ちゃんの画像を渡し、
Modelがそれを猫ちゃんと分類してくれるかまで進めます。

以下コード。

“`classify_cat_and_cup.py
import sys
import numpy a

元記事を表示

Enumを使って複数の定数文字列を管理する。

# Enumは複数の定数をクラスに纏めて管理できる

“`python
import enum

class Option(enum.Enum):
A = “A”
B = “B”
C = “C”

my_choice = Option.A
print(my_choice)
#
“`

このように定義すると、`Option.A`のように定数を呼び出すことができ`Literal`と違いタイプミスや、定数の値を間違えてもエラーとして検出できる。

## Enumは文字列と比較できない

“`python
my_choice = Option.A
print(my_choice == “A”)
# False
“`

EnumはEnum.Valuesのインスタンスなので、文字列と比較するとFalseになる。

## 解決策

クラスを定義する際に`str`を継承することで文字列と比較できるようになる。

“`python
import enum

class Option(str, enum.Enum):
A = “A”

元記事を表示

Pythonで間違えて変数名にビルトイン関数を使ってしまったのに動いてしまったことについて

# なんでそんなことしたの

某プログラミングスキルチェックサイトで問題を解いていたのですが、2桁の数字を0埋めで表示させたい場面がありました。
この問題はPythonで挑みました。恐らくPythonに慣れ親しんでいる方であれば、文字列型の`.format`関数を使うというのがパッと思い浮かぶのではないかと思われます。特にこの問題は2つ2桁の数字を並べるものだったので、後でそれが最適解だったことに気付きました。
ただ、私は普段JavaScriptやTypeScriptに慣れ親しんでいたので、そこで使いがちな手法を使うことにしました。

“`python
def to2digit(num):
return (‘0’ + str(num))[-2::]
// …

hoge = to2digit(hour)+to2digit(min)
“`

…おわかりいただけたでしょうか。
もう既にタイトルでネタバレになっていますが。

# これどうなるの

この動作を括弧の内側の方から追っていきます。
`min`は数字だと思って使ってしまったビルトイン関数ですが、`str(min)`はエラ

元記事を表示

Pythonで株価データを取得②

# Todo
**株価の分析をより高度なものにする為、テクニカル指標を追加する**

– `MACD`
– `RSI`
– `ボリンジャーバンド`
– `ローソク足`

:::note
これらのテクニカル指標の追加は、Pythonだと**TA-Lib**というライブラリを使用することで簡単に出来る。
:::
:::note warn
**TA-Lib**のインストールは環境によって上手くいかないケースがあるためDockerを使い環境構築を行う。
:::

[Pythonで株価データを取得①](https://qiita.com/rexid/items/4148e29300f47966066e)では`移動平均`と`出来高(株取引量)`をグラフで可視化している
※本記事でも取り扱う

# 用語

`テクニカル指標`

– ***移動平均***
– **過去〇〇日分の平均**
– ゴールデンクロス
– 「短期の移動平均線」が「中期以上の移動平均線」を下から上に抜けること

元記事を表示

緯度経度の範囲判定ライブラリturfpyの範囲指定方法検証

# turfpy
turf.jsを再実装した地理空間データ分析を実行するための Python ライブラリ
[https://turfpy.readthedocs.io/en/latest/index.html](https://turfpy.readthedocs.io/en/latest/index.html)

※turf.js:Advanced geospatial analysis for browsers and Node.js
(ブラウザーと Node.js の高度な地理空間分析)

今回は緯度・経度で指定した範囲の内外を判断する処理に使用
範囲指定をあまり考えずに実行したら想定通りの判定をしなかったので
久しぶりに「qiita書こう!」とその内容をまとめました

# 前提条件
– 地図上で四角形で表示されている豊田スタジアムの競技場の範囲内か判定する
– 指定した範囲の倍の広さ(だいたい)でランダムに位置を2000ポイントを範囲内か判定する
Kullback–Leibler divergence(KL情報量)から画像の類似度を推定してみた(ブレ検出付き)

こんにちは!![Aster](https://twitter.com/Beehibiki)です!!!

2022年9月23日-25日にかけて[IwakenLab](https://iwakenlab.jp/)で熱海に温泉開発合宿を行いました!!
まず、支援者としてたくさんの方々から金銭面中心に支援をいただきました。本当にありがとうございました!!!

開発合宿に参加したメンバーで「開発合宿ブログリレー」として、10月発信していくことにしました。(アドカレのような企画の10月版です。10月1日~10月31日までブログリレーしていきます。

https://iwaken.notion.site/XR-a2faaa2ebc7c4b5381d48e1d2aebd11e

## 開発合宿で開発したもの(Auto pic in video)
今回2泊3日でKullback–Leibler divergence(KL情報量)から画像の類似度を推定を行い、自動で撮影するシステムを開発いたしました。
なぜKL情報量から類似度の推定を行ったかというと、パターン認識と機械学習(PRML)の本を読んでおり

元記事を表示

NLTK BLEUのSmoothing Functionはどれくらいスムージングしているのか

**BLEU** は、正解テキスト(参照文、reference)と生成された文章(生成文、hypothesis)が、どれくらい一致しているかを示す値です。本来は機械翻訳の自動評価手法だと思いますが、文章生成系の様々なタスクで応用されています。

$$
\\text{BLEU}=\text{BP}(\prod_{i=1}^{N}precision_i)^{1/N}
$$

$precision_i$ にあたる部分は、$i$-Gramでの文章の一致割合になります。
たとえば「This is a pen」と「This is an apple」は、1gramで2/4一致、2gramで1/3一致なので、$precision_1=\frac{2}{4}$, $precision_2=\frac{1}{3}$です。

Nはよく4が用いられるようですので、1gramから4gramまでの$precision_i$を計算して、総乗をとったもの$(\prod_{i=1}^{N}precision_i)$をBLEUの算出に使います。この値が大きければ大きいほどBLEUも大きくなり、よく一致しているということに

元記事を表示

LeetCode Problems解いた:718. Maximum Length of Repeated Subarray

LeetCodeの問題集、“`718. Maximum Length of Repeated Subarray“`がacceptされたので、備忘録として。

## 概要
2つの配列に共通する、一番長い「連続する」配列を探す問題。
例)
[1,2,3,4,5][1,6,3,4,5]の2つなら、[3,4,5]。
[1,3,4,5]ではない。
簡単のために、コード以外の場では`len(nums1)`をm、`len(nums2)`をn、m >= nとする。

## コード
今回はpythonでの記述。2通りのコードを。
その①は、テストに通らなかったもの。その②がテストに通ったもの。

コードその①

“`python:Solution
def searcher(n1, n2, h, l = 0):
#「共通する配列の長さ」の探索についてはバイナリサーチを用いて計算コスト削減。
# 計算コスト:O(log(min(len(nums1),len(nums2)))) … [1]
s = (h + l) / 2

元記事を表示

【試行錯誤】OpenAI Whisperを活用した日本語歌詞のforced-alignment その4:stable-tsを試す

# 概要
OpenAI Whisperを活用した日本語歌詞のforced-alignmentの試行錯誤をしています。
通常のWhisperはフレーズレベルの音声区間検出しかできないのに対して、単語レベルの音声区間検出をできるよう改良を加えた[stable-ts](https://github.com/jianfch/stable-ts)を試してみます。
結論としては、日本語音楽データに対してはそのまま使うのは難がありそうな精度でした。

なお本記事は流れとしては[その3](https://qiita.com/shimajiroxyz/items/de213cd333e7bf846781)の続きというよりは[その1](https://qiita.com/shimajiroxyz/items/c019cfd60ba2953eb463)の続きに近いです。

# 背景
Whisperでフレーズレベルよりも細かいタイムスタンプを検出したいという需要はままあるようで、[本家のgithubでDiscussion](https://github.com/openai/whisper/discussio

元記事を表示

Excel業務(無駄)を自動化したい part1 Excelに値を代入しよう

# はじめに
このサイトでは、社会人なりたての私が無駄を省くための戦いをまとめています。
今回のテーマは、pythonのライブラリを用いて、
Excelに文字列を代入することをメインに書いていきます。
ライブラリ名は、openpyxlです。

# 実行環境
Windows10
Python 3.10.5

# openpyxlとは?
openpyxlはExcelファイル(`.xlsx`)を読み書きできるツールです。
公式ドキュメント [openpyxl/openpyxl-Bitbucket](https://bitbucket.org/openpyxl/openpyxl/src/master/)
詳しくは[こちら!](https://note.nkmk.me/python-openpyxl-usage/)
**今回はExcelファイル内のデータを読み込んで、分析するのではなく、
代入したいだけなので、pandasではなくopenpyxlを使用しています!**

# Excelに値を代入しよう!
Excel業務の自動化の第一歩として、Excelデータをロードして、セルの値を変更を行うプ

元記事を表示

AWS Certified Machine Learningの勉強方法

2022/09/25に[AWS Certified Machine Learning](https://aws.amazon.com/jp/certification/certified-machine-learning-specialty/)を822点で合格しました。
合格に至るまでに、何をどれぐらい勉強したか、記載します。

# 目次
1. [試験範囲](#1-試験範囲)
2. [前提知識](#2-前提知識)
3. [勉強したこと](#3-勉強したこと)
1. [TechStock](#3-1-TechStock)
2. [AWS公式対策講座](#3-2-AWS公式対策講座)
3. [AWS公式模擬試験](#3-3-AWS公式模擬試験)
4. [最後に](#4-最後に)

# 1. 試験範囲
試験範囲は公開されています。
[こちら](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-ml/AWS-Certified-Machine-Learning-Specialty_Ex

元記事を表示

【試行錯誤】OpenAI Whisperを活用した日本語歌詞のforced-alignment その3:別ライブラリによる音声区間検出

# 概要
Whisperを活用した日本語歌詞のforced-alignmentの試行錯誤 その3です。
whisperによる音声区間抽出の精度を高めるために、別の音声区間検出ライブラリを組み合わせることを検討します。[inaSpeechSegmenter](https://github.com/ina-foss/inaSpeechSegmenter)という音声区間検出ライブラリを使ってみます。

前回記事:[【試行錯誤】OpenAI Whisperを活用した日本語歌詞のforced-alignment その2:音源分離](https://qiita.com/shimajiroxyz/items/6d253a0a6c53ca65027e)
# 背景
OpenAI Whisperは2022年10月現在では最高クラスの認識精度をもつオープンソースの音声認識モデルです。Whisperに音楽の歌唱区間を検出させると、BGMのみの部分も発話区間に含まれる問題があります。forced-alignmentをするためにはなるべく実際の発話区間をピッタリ検出できることが望ましいです。
そこで音声区間検出に

元記事を表示

openpyxlでグラフの凡例を一部項目だけ消したい

Excelのグラフ(散布図)を作るとき、指定した横軸座標を示す縦棒(カーソル)を入れたくなることがあります。
散布図の系列として縦線を追加すればいいのですが、そのままでは凡例に余計な項目が表示されてしまうのが気に入りません。

そこで、openpyxlでグラフを生成し、カーソルとなる線を追加した後にその凡例の項目を消すように試みました。

“`python
import math
import openpyxl

xax = list(range(360))
values = [
[”, *xax]
,[‘sin’, *[math.sin(x*math.pi/180) for x in xax]]
,[‘cos’, *[math.cos(x*math.pi/180) for x in xax]]
]

wb = openpyxl.Workbook()
ws = wb.active
for l in values:
ws.append(l)

chart = openpyxl.chart.ScatterChart() #散布図
chart.anch

元記事を表示

転移学習を使ってアベンジャーズを識別する

# Introduction -はじめに-
はじめまして。
私は外資系企業で秘書として働きながら、機械学習を学んでいる24歳です。
Microsoft officeのword/excelなどは日常的に使っていますが、プログラミングについては全くの初心者です。3ヶ月間AidemyさんのAIアプリ開発講座を受講し、成果物としてこのブログを作成しています。私のようにエンジニアを目指す方がつまづいた時に、このブログが”ちょこっと”参考になれば大変嬉しい限りです。

# Taget -目標-
今回挑戦したのは、「__アベンジャーズヒーローの画像識別__ 」です。
ここで”アベンジャーズ(Avengers)”について簡単にご紹介いたします。
> 『アベンジャーズ』(原題: Marvel’s The Avengers)は、マーベル・コミックの同名のスーパーヒーローチームをベースにした、2012年のアメリカのスーパーヒーロー映画である。
 [Avengers(Wikipadiaより引用)](ja.wikipedia.org/wiki/アベンジャーズ_(2012年の映画) “Avengers”)

私は

元記事を表示

Pythonが嫌いなのでC++版のPytorchで画像認識をやってみる 12日目 tuple

前回の書き込みから1ヵ月経ってしまった。先日の三連休に試験があり、その勉強でプログラミングができなかったのである。秋の三連休の試験といえば**アレ**である。泣く子も黙る**国家資格**、**情報処理技術者試験**だ。今回は高度情報処理技術者。首尾は上場。まあ専業資格ではないので受かっても名刺に書いてハッタリかますだけだけどね。
世の中リスキリングなどという言葉が流行っているが、社会人たるもの**時代に合わせて勉強するのは当たり前**。技術革新など今に始まったことではない。30年同じことやって美味い飯が食い続ける訳がない。何を今更ドマヌケなことを言っているのかである。私が社会人になったときは会社にパソコンなど無かったのだ。C++、java、js、sql、vbからCAD検定、英語独語ロシア語、果ては溶接技能検定、クレーン、大特に至るまで全部社会人になってから習得した。
今はまたIT系がマイブームで来春も高度情報処理技術者のST、あと技術士を受けるつもり。頭はハゲてもバブルを生で見た世代である。昭和のおじさんはギラギラ油の肉食系で、常に向上心を忘れないのだ。平成のナヨナヨした若造と一緒にし

元記事を表示

【Python】妻に真夜中のダンスレッスン予約を強要されたので、Webスクレイピングで回避を試みようとしている話(2.python仮想環境構築)

前回は、「1.ことの発端」について発信しました。

今回は、超便利らしい Pythonの仮想環境の構築に挑戦します。

pythonで開発する場合、開発単位(プロジェクト単位)ごとに仮想環境を構築したほうが良いらしい。という記事をみつけたので、そうすることにしました。

# どんなメリットがあるのか?
いろんなサイトを見る限り、

> **プロジェクトごとに独立したpython動作環境が構築できる。**

ということみたいです。

pythonやそれを取り巻くパッケージは、定期的にバージョンアップされます。
そのバージョンアップによって、これまで動いていたプログラムが動かないなどの影響を受けることがあるそうな。

たとえば、1つのサーバーにpythonで開発された「受注システム」、「在庫管理システム」が稼働していた場合、受注システムで使用しているパッケージをバージョンアップしたことで、在庫管理システムがストップしてしまう。ということなん

元記事を表示

OTHERカテゴリの最新記事