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

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

ABC245 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

ABC245(AtCoder Beginner Contest 245) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

https://qiita.com/sano192/items/54accd04df62242b70f0

# A – Good morning

https://atcoder.jp/contests/abc245/tasks/abc245_a

・A

元記事を表示

pyenvでPythonのversionが切り替わらない!

## 状況

Homebrewを使用して、pyenvをインストールした後、
pyenvでPythonの3.6.5をインストールしました。

“`:ターミナル
% python -V
Python 2.2.5

% pyenv global 3.6.5

% pyenv versions
system
* 3.6.5 (set by /Users/user/.pyenv/version)

% python -V
Python 2.2.5
“`
pyenvでバージョン3.6.5をglobalで設定してもバージョンは2.2.5を参照しており
pyenvを使ったPythonのバージョンを切り替えることができていません。

## 対処法: シンボリックリンクの再関連付け

下記ディレクトリの中にpython-buildがあるか見る
“`:ターミナル
/usr/local/Cellar/pyenv/2.2.5/bin/
“`
もしあれば、下記コマンドで再度関連づけしてみる
“`
% brew unlink pyenv && brew link pyenv
Unlinking /us

元記事を表示

すべての部分集合の数字の和を求める

以下のような問題を考えます。

### すべての部分集合の数字の和を求める問題

**問題:** トランプの52枚の集合のすべての部分集合を作り各々の数字の和を求めたとき1の位の数で一番多いのはどれ?

1桁の数字の数をカウントする配列countを定義します。

“`python
import numpy as np
count = np.array([0]*10)
#[0 0 0 0 0 0 0 0 0 0]
“`

部分集合はまず空集合$\{\}$から初めて、それまでの部分集合のすべてに、新たな要素加えたものを追加行くと考えられます。$1,2,..$と加えて行くと考えると以下のようになります。

“`math
\{ \{ \} \} \rightarrow \{ \{ \} \{ 1\} \}
\rightarrow \{ \{ \} \{ 1\} \{ 2 \} \{ 1, 2\} \}
“`

これを数字の和のカウントを考えると、1を加えるということは右に1つ動くということなので、1つ右に回転して前のものと足せば良いことになります。

“`
[1 0

元記事を表示

原始ピタゴラス数の木とその応用

### 原始ピタゴラス数の生成
「[ピタゴラスの定理(Wikipedia)](hhttps://ja.wikipedia.org/wiki/%E3%83%94%E3%82%BF%E3%82%B4%E3%83%A9%E3%82%B9%E3%81%AE%E5%AE%9A%E7%90%86)」等にあるように、原始ピタゴラス数の生成は以下の式が有名ですが、今回はMatrixを用いて原始ピタゴラス数の木を作る方法を紹介します。

“`math
(a, b, c) = (m^2 − n^2, 2mn, m^2 + n^2)
“`

### 原始ピタゴラス数の木

[原始ピタゴラス数の木(高校数学の美しい物語)](https://manabitimes.jp/math/1435) に定理と証明が記載されています。定理は以下のようなものです。

“`math
すべての原始ピタゴラス数は \\
(3,4,5)に以下の行列A,B,Cの任意の組合せの積をM^nとすると \\
(a,b,c)=(3,4,5)M^nで表せる \\ \\

A=\left(
\begin{array}{rr}
1 &

元記事を表示

Blenderでジグソーパズル風のパズルのアドオン

## Blenderでジグソーパズル風のパズル

Blender3.1で、ジグソーパズル風のパズルを遊べるアドオンをPythonで作成したので紹介します。

## やり方

– [Blender Add-on: Jigsaw](https://github.com/SaitoTsutomu/Jigsaw)の画面にしたがってインストールしてください。
– アドオンのチェックでは「テスト中」を選んでください。
– サイドバーの編集タブの「Puzzle」を開いてください。

シェルコマンドをPythonから実行して結果をリアルタイムに標準出力に出す方法

# 概要

Python の [subprocess](https://docs.python.org/ja/3.9/library/subprocess.html) を使うことでシェルコマンドを実行可能だが、実行結果をリアルタイムに標準出力へとパイプする方法(かつエラーハンドリングが正しく行われる方法)がわかりづらいのでメモしておく。

ちなみに `subprocess.run` ではリアルタイムなパイプはできなかった。

# 方法

“`py
import subprocess
import sys
import tempfile

def run_shell(cmd):
print(f’cmd: {cmd}’)
with subprocess.Popen(cmd, encoding=’UTF-8′, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as p:
for line in p.stdout:
sys.stdout.write(line)
p.wa

元記事を表示

Python で非 async な IO 処理を並列したい場合

# 概要

Python で並列処理したい場合は [asyncio](https://docs.python.org/ja/3.9/library/asyncio.html) が便利だが、EventLoop が設定しづらかったり、IO自体が async 対応してなかったり(つまりIO終わるまで制御を握ってしまう)などの場合、純粋に並列処理したい場合がある。
その場合の方法をメモしておく。

# 方法

“`py
from concurrent.futures import ThreadPoolExecutor

def main():
target_file_list = [
‘file1.dat’,
‘file2.dat’,
]
# 平行して呼び出し
with ThreadPoolExecutor() as executor:
threads = [
executor.submit(
lambda: hoge.some_io_process(tar

元記事を表示

Pythonを使ってPDFの改行無しの翻訳をDeepLで実行する

# 目的
ショートカットキーを使って簡単に改行無しのPDFの翻訳を行う。

# 環境
windows 10
python 3.10

# コード
## パッケージのインストール
今回使うパッケージをインストールします。
“`python
pip install keyboard pyautogui pyperclip
# keyboard: ショートカットキーの受け取りに使う
# pyautogui: 画面の操作に使う
# pyperclip: クリップボードの取得に使う
“`

## パッケージのインポート
必要なパッケージをインポートします。
“`python
import keyboard
import pyautogui
import pyperclip
import re # 改行の削除
import time
import os # DeepLを開く
“`
## メイン
“`python
def main():
#  現在選択されているテキストをコピーする
pyautogui.hotkey(“ctrl”, “c”)
#  DeepLを開く

元記事を表示

Teamsのステータスを自動で変更する

# 困っていたこと

集中力のゴールデンタイムは誰にも邪魔されたくないのに、チャットで「ちょっといいですか?」とメンションが入ると集中できない。

Teamsのステータスを**応答不可**にすれば通知に気づかなくて済むのですが、
こまめにステータスを切り替えることを**忘れがち**。

#### 朝のこの時間帯だけはなんとしても守りたい。

というわけで毎日同じ時間になれば、Teamsのステータスを変えるスクリプトを作ってみた。

## 環境

Windows10
Teams
Python3.10

## まずは手作業でやってみる

### 1 Teamsを起動する

Windowsキーを押してから、「teams」と打てばこんな感じになる。

![2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75217/8b648238-184d-6f01-2dec-880931253f41.png)

この後Enterキー叩けば起動される。(起動済みの場合は最前面にくる)

### 2 Teamsの検索に移動

元記事を表示

Python で ctypes で OptiX を呼び出したいメモ

OptiX を Python で呼んでちょっとしたテストとか Windows でぺろっとやりたい.
OptiX のコードビルドとかめんどい…
SDK も regist しないと落とせないし…

ctypes でコンパイル不要で頑張ってみます.

## dll のありか

OptiX のコードを見るとレジストリ探索とかしてたりします.

ただ, Windows だと(バージョンにもよるかも), 以下のところにありました.

“`
from ctypes import *

dllpath=’C:\\Windows\\System32\\DriverStore\\FileRepository\\nv_dispsig.inf_amd64_145fe9c72c40de0a\\nvoptix.dll’

optix = cdll.LoadLibrary(dllpath)
print(optix.optixQueryFunctionTable)
“`

## optixInit?

これもコードみるとわかりますが関数として用意はされておらず, optix SDK header のみに

元記事を表示

AtCoder Beginner Contest 245 A~D 4完記事

アルゴリズムの学習改善のための自身の備忘録及び学習の一環として記事を書くことにしました.
読んでくれた方で何かありましたら気兼ねなくコメントしてください.お待ちしております.

# [A – Good morning](https://atcoder.jp/contests/abc245/tasks/abc245_a)

## 問題文 概要
高橋君は$A$時$B$分,青木君は$C$時$D+1$分に起きました.早起きしたのはどちらでしょう.

## 制約と入力
制約
>$0 \leq A \leq 23$
>$0 \leq B \leq 59$
>$0 \leq C \leq 23$
>$0 \leq D \leq 59$
>入力は全て整数である

入力
>入力は以下の形式で標準入力から与えられる。
>$A \ \ B \ \ C \ \ D$

## 考察
$A>C$の時,Aoki
$A

元記事を表示

偶数回の繰り返しにのみマッチさせる正規表現【python】

# 要旨
正規表現で特定文字列の偶数回/奇数回の連続にのみマッチし、奇数回/偶数回の連続にはマッチしない正規表現を定義したい。結論としては、以下のように書ける。

“`Python
# 引数に与えた文字列の偶数回の繰り返しのみにマッチする(奇数回の繰り返しにマッチしない)正規表現文字列を返す
def get_even_repeat_pattern(s):
return “(?

元記事を表示

10分でできるBERT (英文テキストのQA)

# はじめに
「XX分でできるBERT」シリーズ第二弾です。
(第一弾の記事はこちら → [60分でできるBERT(英語テキストの感情分析)](https://qiita.com/makaishi2/items/cb97f6a70a12db55443b))
今回は、事前学習モデルを使って、そのまま予測するので、学習が不要、よって、本当に10分かからずにBERTの予測モデルを動かすことができます。

# Question-Answering予測とは
BERTが活用できるテキスト分析のパターンの一つです。入力として「ヒントとなる一連のテキスト」と「そのテキストを前提とした質問」の対になる文をモデルに入力します。すると、モデルはヒントとなるテキストの特定の範囲を **FromとToのインデックス**で示します。
この範囲の文章が、質問への回答となっている仕掛けです。

【競プロ専用】PythonでMultiSetを今度こそ

簡単軽量で競プロ攻略に十分な、Python版MultiSetを提供します。

AtCoderでは、最近(2022年)、Pythonには存在しないMultiSetを前提とした問題が、繰り返し出題されています。この暴挙により、Python、PyPy3を使うプレイヤーが、死屍累々たるありさまです。一部の上位プレイヤーは、既存のMultiSetライブラリをググって貼り付けたり、自分で用意したりして、対応しているようです。

しかし、これには、以下の課題があります。

+ 平衡二分木を使ったMultiSetの実装は、複雑長大であり、応用含めた使い方がわかりにくい。
+ heapqやセグメント木を使った実装は、制限条件が多すぎて、競プロ問題に適用しにくい。

よって、この記事では、セグメント木を使った簡単実装でありながら、競プロ問題への応用性を備えたMultiSetを提供します。具体的には以下の特徴を持ちます。

+ 容易に理解可能な約40行の軽量実装。(別途、ACL互換のセグメント木の実装が必要です)
+ Python使いにも理解しやすい、Python set、list、bisectに似たメソッ

元記事を表示

【Kaggle】Tabular Playground Series – Mar 2022のBaseline

# はじめに
はじめまして.株式会社音圧爆上げくんにプロKagglerとして所属していますAshmeと申します.

業務の一環としてKaggleの様々なコンペティションに参加し,そこで得られた知見などを記事にして投稿しております.よろしくお願いいたします.

今回は今月中開催されているTabular Playground Series – Mar 2022のベースラインとして作成したモデルについて説明していきます.モデルとしてLightGBMを用いて,時系列データに対する基本的な特徴量エンジニアリング,簡単なアンサンブルについても説明していきます.今回のコードについては[こちら](https://www.kaggle.com/code/kaicho0504/lgbm-baseline)にあります.気になる方はぜひご一読ください.

こちらのコンペティションは時系列データの予測をする回帰問題になっています.通常のテーブルデータでは用いないような時系列データに対する特徴量エンジニアリングが必要になります.

またTabular Playground Seriesは毎月開催されており,通

元記事を表示

【ロボット】Braitenberg Vehicleを活用した単純で直感的な障害物回避方法について

# 参考文献

**原著**
[1] [Valentino Braitenberg : (1984) VEHICLES -Expderiments in Synthetic Psychology-,The MIT Press.](https://www.amazon.co.jp/dp/0262022087)
[image.png](https://www.amazon.co.jp/dp/0262022087)

**日本語訳**
[2] [V・ブライテンベルク /著,加地大介 /訳,: (1987) 模型は心を持ちうるか 人工知能・ 認知科学・脳生理学の焦点,哲学書房](https://www.amazon.co.jp/dp/4886790135)
[image.pn</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Python</div>
<div class='tag-cloud-link'>Robot</div>
<div class='tag-cloud-link'>ロボット</div>
<div class='tag-cloud-link'>EV3</div>
<div class='tag-cloud-link'>BraitenbergVehicle</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/domutoro406/items/c52892b5afd2de34d0fd'>元記事を表示</a></div>
<h3 id=OpenCVでトゥーンな加工をする

# はじめに
ある日突然、漫画のような画作りをしたくなった。
理由はない。これが人生というものなのかもしれない。

元画像は[**カラーコーンとマッチョ(縦型写真)**](https://freephotomuscle.com/archives/photo/7838)(を縮小したもの)とする。

|元画像 macho.jpg|
|:-:|
|![macho.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520216/cb8e308d-ad54-9b0e-bd92-22715c14c970.jpeg)|

# 加工いろいろ
## 減色

減色にはいろいろな方法があるが、ここではかの有名な[画像処理100本ノック](https://github.com/yoyoyo-yo/Gasyori100knock)を改変した独自関数を使う。

“`Python:減色
def color_subtraction(image, div=4):
th1 = 256 / div
th2 = 256 / (

元記事を表示

ありったけの日本の住所をかき集める

# 概要
日本中の住所(都道府県~小字まで)をオープンデータから収集してみる。
与えた文字列が住所かどうかの判定にきっと使えるのではないかと。

用いるデータは[住所.jpの住所データ](http://jusyo.jp/csv/document.html)と[Geolonia 住所データ](https://geolonia.github.io/japanese-addresses/)だ。前者は[日本郵便の郵便番号データ](https://www.post.japanpost.jp/zipcode/download.html)を加工したもので、後者は[国土地理院の位置参照情報](https://nlftp.mlit.go.jp/cgi-bin/isj/dls/_choose_method.cgi)をベースにしているデータである。

本記事ではGoogle ColaboratoryでPythonを用いてデータ処理していく。

# データ処理
## 住所.jpデータ
更新日 2022-03-10 のデータをダウンロード。このデータはエンコーディングがshift-jisであるとダウンロードペー

元記事を表示

Python(Django)でダッシュボード作る(WSL2)

# はじめに
こんにちは。私用でPythonでダッシュボードをつくってみる機会があったので記事にしてみました。

PythonはじめてですのでWSL2へのインストール等々から始めていきます:pray:

参考になれば幸いです:smile:

# Djangoとは
Djangodは、Pythonで実装されたWebアプリケーションフレームワークです。

日本語のドキュメントもあるので助かります:bow:

https://github.com/plotly/dash

# 1. Python3がインストールされているか確認する

“`
$ python3 -V
“`

# 2. 1でインストールしてなかったらPython3をインストールする
“`console
$ sudo apt-get update
$ sudo apt install python3 -y
“`

# 3. pipがインストールされているか確認する

“`console
$ pip -V
“`

# 4. 3でインストールしてなかったらpip3をインストールする

“`
$ sudo apt-get u

元記事を表示

GoogleColabでweb上のGIFを画像に分解して保存

# コード
GoogleColabのVM内に画像を保存する関係で、大きいサイズのファイルを扱うのは避ける。
また、インスタンスが切れてしまえば保存したデータは全てリセットされる。

画像を保存するディレクトリをVM上に作成
“`python
import os
path_content = ‘/content/img/’ #VM上のディレクトリを指定
if not os.path.exists(path_content):
os.mkdir(path_content)
“`

Googleの画像検索などで画像を開いたときに、”画像アドレスをコピー”したものを`url`に入れる。
“`python
import requests
from PIL import Image, ImageSequence
import io
import numpy as np
url = “” #保存したい画像の画像アドレス
fname_img = “img” #保存したい画像のファイル名
fname_imgext = “png” #保存したい画像の拡張子

response = reque

元記事を表示

OTHERカテゴリの最新記事