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

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

イテレータを操作する関数について(備忘録)

## イテレータとは?
イテレータとは、イテラブル(繰り返し可能)なオブジェクトから要素を取り出すオブジェクトのことです。

※イテラブル…for文を用いて、繰り返し処理ができるオブジェクトのこと。リストやタプルなどがあげられます。

## next関数とiter関数について

next関数は、next(イテレーター) のようにイテレータから要素を一つ取り出して消去することができる関数のこと。最後の要素を取り出し終わり、再度、関数を実行しようとするとstopIterationという例外が発生する。(繰り返し停止の意味)

iter関数とは、指定されたイテラブルに対するイテレーター(iterator)を返す関数のこと。
~~~python
>>> iterater = iter([3, 10, 7])
# インデックス0から順番に取り出していく
>>> next(iterater)
3
>>> next(iterater)
10
>>> next(iterater)
7
# エラーが発生する
>>> next(iterater)
Traceback (most recent call

元記事を表示

自動テストで使用しているpytestの異常終了発生時の調査の話

# はじめに
自動テストで実行されるpytestで発生した強制エラーが発生した際の調査方法について記載したいと思います。

# エラー内容
“`sh
$ ./run_ci_tests
(ログ抜粋)
……
tests/models/test_event_xxxx1.py ssssssss
tests/models/test_event_xxxx2.py ssssssssssssss
tests/models/test_event_xxxx3.py sssssssssss
./run_ci_tests: line xx: 24639 Killed
“`

テストに不備はないですが、プロセス終了されている状態が発生しました。(プロセスkill発生)
テスト実行環境を確認しながら調査を実施していきます。

# テスト実行環境のCPU/メモリ状態確認

テスト実行前と実行後のCPU/メモリ状態をtopコマンドで確認していきます。

## テスト 実行前
“`sh
Mem: 2057192k total, 1152792k used, 904400k free, 30388

元記事を表示

whisperを使って話者分離有りの文字起こしてみた

この記事は[Safie Engineers’ Blog! Advent Calendar 8日目](https://qiita.com/advent-calendar/2022/safie)の記事です。

# はじめに
映像から取得できる1時間程度の映像(ムービークリップ)を文字起こししたいという要望があったので、文字起こしシステムを作ってみました。
備忘録も兼ねて実施したことをまとめておこうと思います。[whisper](https://openai.com/blog/whisper)はOpenAI社が公開している高精度の文字起こしが可能なモデルになります。

文字起こしにwhipsperを使った決め手は以下です。
– AWS Transcribeより高精度
– pythonで素早く試せる
– MITライセンス

AWS Transcribeで可能な話者分離ができないことが懸念でしたが、話者分離も別のモデルを組み合わせれば実現可能と思いwhipserに決めました。

# アーキテクチャ
![システム構成図.drawio (3).png](https://qiita-image-s

元記事を表示

【AtCoder】ABC277のA,B,C,D における Python解説

ABC277のA,B,C,D問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。

また、diffは問題の難易度を表す指標です。[Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。

質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)

作者プロフィール
Atcoder :[緑 829](https://atcoder.jp/users/tsuru1471)
22/1208 現在

# 目次
[はじめに](#はじめに)
[A.^{-1}](#a-1)
[B.Playing Cards Validation](#bplaying-cards-validation)
[C.Ladder Takaha

元記事を表示

DEAP×Streamlitで遺伝的アルゴリズムのアプリを作ってみた

進化計算ライブラリ[DEAP](https://deap.readthedocs.io/en/master/index.html)とPythonのWEBフレームワーク[Streamlit](https://streamlit.io/)を使って、文字列を入力すると遺伝的アルゴリズムでゼロからその文字列を当ててくれるアプリを作りました。

数理最適化の理論的な話をしたり、ゴリゴリ実装するような記事ではないので、ぜひライトな気持ちで読んでいただけると嬉しいです。

## 作ったもの

![imageonline-gifspeed-1570116.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119757/9bc37536-c409-a483-b51f-8645c929fca7.gif)
アプリへのリンクとソースコードはそれぞれこちらです(アプリはスリープしてる可能性があるので、アクセス後に少し待ってみてください)。

https://oddgai-search-string-main-rb97uy.strea

元記事を表示

pyannote.audioで簡単話者分離〜whisperを添えて〜

音声認識の世界では、OpenAIが開発した[whisper](https://openai.com/blog/whisper/)というモデルが話題になりましたね。99言語に対応しており、日本語の音声認識の精度も抜群です。
非常に優秀なwhisperですが、いつ誰が話したのかを認識する、いわゆる「話者分離」はできません…。
ということで、アドベントカレンダー14日目の記事では、**pyannote.audio**というライブラリを使った話者分離方法について紹介します。

# pyannote.audioの概要

pyannote.audioは、話者分離のためのPythonによるオープンソースフレームワークです。
下記のようなパイプラインで話者分離を実現しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1809679/ba2c1423-c2cd-cf3a-7343-657978e16bda.png)
論文:[pyannote.audio: neural building block

元記事を表示

Pythonで株価の移動平均線を計算する。

チャートツールなどで移動平均線を扱っていると、値が微妙過ぎてグラフからだと移動平均線を超えているか超えていないかが分からない時がある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953203/f7dd5318-464e-b5be-9a32-a4cbe0355fd5.png)

そんな時にはPhythonの出番。

データを取得してCSVに保存するのは前回の記事を参照されたい。

https://qiita.com/tatsu_sekine/private/7d979c47177c64fb9677

早速だがソースコード。ここでは10か月移動平均線を求めてみる。

“`python
import pandas as pd

# カラムごとの計算手法を指定
agg_dict = {
“open”: “first”,
“high”: “max”,
“low”: “min”,
“close”: “last”,
“volume”: “sum”

元記事を表示

腕立てカウントーを作った!

![push_up.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2290515/18849280-a19e-1f5e-dc0e-981d0da6e6ae.gif)

こんにちは。[AMBL株式会社](https://www.ambl.co.jp/)のR&D部のエイドリアンです。この記事は[AMBLアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/ambl-rd)の記事です。

# 概要

腕立ては好きですか?私は好きです。が、使ってる筋肉を意識しながら己の限界まで頑張ろうとすると、「あれ?今って何回やったっけ?」となりがちです。結果として達成感がなく、自分がちゃんと成長したかどうかさえ分からなくなってしまいます。ですので、今回は腕立てをカウントしてくれるものをちらっと作ってみました!

> 今ここで限界を超えろ。それしか道はねぇ。
>
> ~ヤミ・スケヒロ~

# やりたいこと

やりたいこと極めて単純です:腕立てを数える!
ではどうすれば

元記事を表示

ReportLabで長い表を作るとき、改ページ後にもテーブルヘッダーを表示する

ReportLabでPDFを作るシリーズ第2弾

## DocTemplateとLongTableを使おう

### SimpleDocTemplateの使い方

“`python
doc = SimpleDocTemplate(filename=filename)
flowables = [
# Flowableオブジェクトのリスト
]
doc.build(flowables)
“`

もっと複雑なレイアウトの例は第1弾の [お前らのReportLabの使い方は間違っている](https://qiita.com/kokardy/items/92e8f3b65c965e20de34)を参照

### LongTableの使い方
“`python
table = LongTable(table_contents, repeatRows=1)
“`
repeatRowsを指定することで改ページ時に繰り返す行を指定する

TableStyleをセットして、罫線や寄せなどを指定できる。

## サンプルソース

“`python
from reportlab.lib imp

元記事を表示

Slackに追加された絵文字を自動通知するBotを復旧させた話

この記事は [ハンズラボ AdventCalendar2022](https://qiita.com/advent-calendar/2022/handslab) 8日目の記事です。

# はじめに
私がハンズラボに入社した当時、Slackの #random チャンネルには多種多様のおもしろbotが動いていました。その中の一つが **EmojiBot** です。
![スクリーンショット 2022-12-05 10.39.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501670/8680bb91-30bf-308f-620b-80cd84a9d0f9.png)

このbotはGASで作成されており、その日に新規に登録された絵文字を自動的に検知して通知してくれるというものでした。Slackでのコミュニケーションの活性化に一役買っており私も大好きなbotでした。しかし、SlackのAPIの仕様が変更されたためか、またはGASの管理者の退職の影響か、ある日動かなくなってしまいました。

とてもとても寂し

元記事を表示

datetime.datetime.now() をモックしたい

Pythonでユニットテストしてたら突如こんなエラーが。
“`
TypeError: can’t set attributes of built-in/extension type ‘datetime.datetime’
“`

Pythonでシステム日時 `datetime.datetime.now()` を扱う関数のユニットテストを実行したときに現れました。

理由は実は、このシステム日時の取得関数が標準のunittestではモックできない関数だったからでした。

今回はなんとしてもこの関数をユニットテストするために考えた方法3選をご紹介します。

# 背景
### システム日時をモックしたい! 
こんな関数をユニットテストしたいとき、あなたならどうしますか?
“`python
def is_past(time: datetime.datetime) -> bool:
“””
与えられた時刻がシステム日時より前かどうかを返却
“””
return time < datetime.datetime.now() ``` `datetime.d

元記事を表示

【Flask】ファイルのアップロード方法

## はじめに
この記事ではHTMLフォームでアップロードしたファイルをFlaskで処理する方法について解説しています。環境にFlaskがインストールされている前提で話を進めますのでご了承ください。詳しい内容についてはFlask公式ドキュメントを参照してください。

## 動作環境
– macOS Monterey
– Python 3.10.8
– Flask 2.2.2

## 基本的な流れ
基本的な流れはシンプルです。

1. HTMLフォームの“`“`でファイルを送信
2. POSTされたファイルをpython側で“`request.files“`オブジェクトから取得
3. ファイルの“`save“`メソッドで指定したパスに保存

単なるユーザー名などの文字列とは異なり、ファイルのアップロードではセキュリティ的に他にも必要なことはありますが、これだけでとりあえずアップロードは可能です。

## 最小限のコードで実装
“`python:app.py
from flask import Flask
from flask impor

元記事を表示

【Python】__init__.pyの使い方

この記事は、[株式会社ディーバ PD部 Advent Calendar 8日目](https://qiita.com/advent-calendar/2022/diva_pd) の記事になります。

## 概要
Pythonを扱っていれば一度は見たことがある`__init__.py`ですが、大体空のファイルとして扱われることが多い印象です。
どういう意図で置いているのか、何をしてくれるのかを明確に理解できていなかったので調べてみます。

## 役割
### パッケージと認識させる
ディレクトリに`__init__.py`ファイルを置くと、そのディレクトリは**パッケージ**と認識されます。
よくモジュールと混合されるので、違いをあらためて整理すると、
– モジュール
別のファイルから取り込まれることを念頭に置いて実装されたPythonのソースコード
– パッケージ
複数のモジュールを集約したディレクトリのこと

Python3.3より前では、パッケージに`__init__.py`がないとimportさせることが出来ませんでした。
(Python3.2やPytho

元記事を表示

Pythonista3 のscene モジュールでShader コーディング。GLSL をやる。

この記事は、[Pythonista3 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/pythonista3) の08日目の記事です。

https://qiita.com/advent-calendar/2022/pythonista3

一方的な偏った目線で、Pythonista3 を紹介していきます。

ほぼ毎日iPhone(Pythonista3)で、コーディングをしている者です。よろしくお願いします。

以下、私の2022年12月時点の環境です。

“`sysInfo.log
— SYSTEM INFORMATION —
* Pythonista 3.3 (330025), Default interpreter 3.6.1
* iOS 16.0.2, model iPhone12,1, resolution (portrait) 828.0 x 1792.0 @ 2.0
“`

他の環境(iPad や端末の種類、iOS のバージョン違い)では、意図としない挙動(エラーになる)なる場合も

元記事を表示

VSCodeから家電(SwitchBot)を制御して快適なスマート家電ライフを送ろう

## SwitchBotが便利

最近、アプリで制御できるスマートな家電が増えていますよね?

例えば、今回ご紹介する「[SwitchBot](https://www.switchbot.jp/)」も、とっても便利なんです。スマートではない旧来的な家電であっても制御できる赤外線を出してくれるリモコンになってくれるガジェット(`SwitchBot ハブ`)や、お風呂のスイッチなどの物理的なスイッチを押すことができるガジェット(`SwitchBot ボット`(←微妙にネーミングが分かりづらい))があったりします。

私は `SwitchBot ハブ` を使って、スマートではない家電として、古めのテレビのOn/Off、チャンネル変更や、エアコンのOn/Off、運転モードの変更を SwitchBotのアプリから行えるようにして、まるでスマートな家電のように使えるようにしています。
( 寒い冬の朝でも布団の中から暖房をOnにすることができるのでとっても便利です。 )

ちなみに SwitchBotのアプリ画面 はこんな感じです。様々な SwitchBotのガジェットや家電を登録でき、アプリから家

元記事を表示

mayaがエラー・ワーニングを吐く時の対処 8 ~孤立したvtx~

mayaがwarningを吐いて鬱陶しい時

メッシュデータをimportしただけでこんなワーニングを吐く時

Warning: The mesh object|objectShape contains invalid or unused components. These can be cleaned up using the Mesh Cleanup dialog. #

場合にもよるけれども、指示通りにcleanup実行してもwarnigが出続ける場合がある。
そのケースの1つとして、**孤立している頂点**があげられます。

孤立しているvertex

本来edgeやfaceを構成しているはずが、どのfaceにも所属せず1点のみで存在している頂点で、
逆に言えば全vertxIDと全faceに所属しているvertxIDを比較してその差分を取れば、
孤立している頂点が割り出せ・・・・はず。

mayaだと大体面に対してエッジ・頂点の数が少なくなると勝手に削除してくれるので滅多に遭遇しないのですが、
その分遭遇すると厄介ですね。

その為サンプルのデータを用意するのも厄介

元記事を表示

pythonのsubprocessによるバックグラウンド実行

# 前提
この記事は,discord.pyを使ったdiscord botからminecraft serverを制御することが目標のアドベントカレンダーの記事です.
そのため,pythonプログラム内からコマンドを使ってminecraft serverを動かします.そのための方法としてsubprocessのPopenを利用しますので,このPopenを説明します.

# subprocess

subprocessは簡単に言えば,プログラムの中からコマンド(やプログラム)を実行するためのものです.全体的な使い方は以下の記事を参考すると良いと思います.
– [subprocessの使い方(Python3.6)](https://qiita.com/caprest/items/0245a16825789b0263ad)
– 私の環境ではPython 3.10.6ですが,同じように使えます
– [subprocessについてより深く(3系,更新版)](https://qiita.com/HidKamiya/items/e192a55371a2961ca8a4#poll%E3%81%AB%

元記事を表示

Project Euler でコードゴルフをやる【Python】

:::note
この記事は [TLB Enjoy Developers Advent Calendar 2022](https://qiita.com/advent-calendar/2022/tlb-enjoy) の 8日目の記事です。
:::

お久しぶりです。8日ぶり2回目の yatabis です。
今回は Project Euler でコードゴルフをやっていきたいと思います。
早速やりたいのですが、その前に少しだけ説明をします。
(お急ぎの方は [本編](#problem-1-multiples-of-3-or-5) まで読み飛ばしてください。)

# Project Euler
Project Euler (https://projecteuler.net/) は、数学っぽいプログラミングっぽい問題が出題されるウェブサイトです。
多くの問題は解くのに数学の知識とプログラミングのスキルが必要になっています。
プログラミングコンテスト(競技プログラミング)といった感じではどうやらなく、問題を解くことで他人と競い合うというよりは、純粋に一つ一つの問題を解くことを楽しむというほうがメ

元記事を表示

特徴量削減が精度向上に寄与することがあるのか実際に検証してみる

twitterで,精度向上のために特徴量削減をするのは意味がない,という話を聞いたので実際にどうなのかトイデータで試してみる

### 問題設定
デー

元記事を表示

ROS2本を1日でやってみたお話し『ROS2とPythonで作って学ぶAIロボット入門 』

# ROS2本を1日でやってみたお話し『ROS2とPythonで作って学ぶAIロボット入門 』
## はじめに
ROS2アドベントカレンダーの8日目を担当する。
るっとです。
[私のツイッターアカウントはこちらへ。](https://twitter.com/MeRTcooking
)

本記事にアクセスしてくださりありがとうございます!
何かしら皆様にとって有益な情報になると幸いです。

https://qiita.com/advent-calendar/2022/ros2

### ROS2とPythonで作って学ぶAIロボット入門
本記事で使用する本は[ROS2とPythonで作って学ぶAIロボット入門](https://www.kspub.co.jp/book/detail/5289563.html)となります。
私自身も購入してみましたが、大変良い本でした。お近くの本屋さんで皆様も一度手にとって頂けると幸いです。

## ROS2本を1日でやってみたお話し

### 開始日時 2022年10月6日 21:30
そもそも当初は1日でやろうともしていなかったです…

元記事を表示

OTHERカテゴリの最新記事