Python関連のことを調べてみた2021年05月23日

Python関連のことを調べてみた2021年05月23日

【LeetCode】就活に向けたコーディングテスト対策 #01

#はじめに
こんばんは.
M1就活生が[LeetCode](https://leetcode.com/)から,easy問題を中心に**Python**を用いて解いていきます.

https://leetcode.com/

↓では,解いた問題のまとめを随時更新しています.
[まとめ記事](https://qiita.com/halpi/items/43761b89a1873dcc9a5c)

https://qiita.com/halpi/items/43761b89a1873dcc9a5c

#問題
今回解いたのは,難易度easyから [問題1のTwo Sum](https://leetcode.com/problems/two-sum/) です.
問題としては,整数numsの配列と整数targetが与えられたとき,numsの中から整数2つを選び,その合計がtargetと一致するインデックスを返すというもの.
なお,同じ要素は2度使えないとのこと.
>Example 1:
>Input: nums = [2,7,11,15], target = 9
>Output: [0,1]
>O

元記事を表示

【LeetCode】就活に向けたコーディングテスト対策 #00

#はじめに
はじめまして,国立大学情報系M1のhalpiと申します.
晴れて大学院生にもなり,大学生活やバイト,研究で忙しくなるものの,インターンや就活の対策も怠るまいとアウトプットを日々意識しております.

そんなこんなで,インターンや就活の際には,コーディングテストはつきものということで,Qiitaでコーディングテスト対策の記事を投稿していこうと思いました.

コーディングテストについて調べたところ,基本的にはアルゴリズムとデータ構造について問われるとのこと.
対策に関しては,[LeetCode](https://leetcode.com/)というGAFAのコーディングテストも載っているという学習サイトが広く使われているそうです.

https://leetcode.com/

そこで,**LeetCode**から,easy問題を中心に**Python**を用いて解いていきます.

#問題
解いた問題は,別記事として投稿していこうと思います[^1].
随時,下の表に追記していきます.

[^1]: できれば早くて効率の良いコーディングができればと心がけていますが,**読みやすい**

元記事を表示

機械学習で「分からん!」となりがちな正則化の図を分かりやすく解説

# 正則化、ムズいよ‥
機械学習で過学習防止に使われる**正則化**
その例として、よく以下のような図が挙げられているかと思います
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/1b82d44f-fbca-be85-2e93-30a0f2857c51.png)

この図を初めて見た時、少し考えて導き出した結論が以下です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/ba77ffa3-785e-221c-24ee-34ff810c83f5.png)
**「う~ん‥わからん!」**

この図、解説が不十分なことも多く、初見で理解できた人って結構少ないのではないでしょうか‥
図が理解できない事で正則化やリッジ回帰に苦手意識を持った方も多いかと思います(私もそうでした‥)

この現状を打破すべく、**図の解釈を自分なりに整理**したので、**分かりやすさ最優先**で解説

元記事を表示

オフライン環境でplotlyを活用するための基礎(html出力、png出力、インライン描画)

[Plotly](https://plotly.com/python/)は インタラクティブなグラフをかけるデータ可視化ツールです。
オフライン環境でhtml, pngに出力する方法、jupyterlabにインラインでグラフを出力する方法をまとめました。

## 環境
– Ubuntu 20.0.4
– Python 3.8.10

## インストール
グラフをhtml出力するためにplotlyをインストールします。

“`bash
pip install plotly
“`

次にグラフをpngで保存するためにkaleidoをインストールします。

“`bash
pip install kaleido
“`

最後にjupyterlabのインラインでグラフを描くためにjupyterlabの拡張機能をインストールします。

“`bash
pip install jupyterlab
curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh
sudo bash nodesource_setup.s

元記事を表示

再帰を用いた問題解決技法:再帰関数、メモ化、分割統治法 by Python

種々のアルゴリズムで出くわすことになる再帰関数と、メモ化による高速化、分割統治法への適用を、簡単な問題解決事例でまとめました。

#再帰関数
再帰関数とは、手続きの中で自分自身を呼び出す(=再帰呼び出しを行う)関数のことです。

“`Python:Fibonacci-recursive.py
# フィボナッチ数列を求める再帰関数
# 計算量:O((1+√5/2)^N)
def fibo(N):
if N == 0:
return 0
elif N == 1:
return 1

return fibo(N-1) + fibo(N-2)

# 入力受取
# 求めるフィボナッチ数列の番号
digits = int(input())

# 再帰的に解く
fibo(digits)

# 入力 40
# 出力 102334155
“`

#メモ化による高速化
メモ化とは、計算済みの部分問題の解をメモしておき、再帰関数の中で同じ部分問題に2度目以降出くわした際はメモから解を取得し、部分問題が計算し直されるのを防ぐ手法です。

元記事を表示

openpyxlでPermissionError例外を出しちゃう人のための別名保存マクロ(VBA)

Pythonでopenpyxl を使ったコードを書いているとよく出くわすPermissionError例外。
openpyxlで開こうとしているファイルをExcelで編集しているときにでる例外ですが、Python側でreadonly指定していても出るのが痛いところ。

要はExcelでファイルをちゃんと閉じてからスクリプトを実行すればいいんだけど、値変えたりして試行錯誤しながらコードを書いていると地味に忘れがちだし面倒くさい。

解決策としては、編集中のExcelファイルを別名保存して、その別名の方をopenpyxlで開いて試行錯誤する方法が考えられるのですが、別名で保存すると元ファイルが閉じられて保存した別名のほうが開いている状態になってしまいます。

そこで、「編集中のExcelファイルを別名保存して、別名保存前のファイルを再度開いて保存後のほうのファイルを閉じる」というマクロをVBAで書いたのでシェアします。openpyxlで別名の方を開けばPermissionError例外に悩むことなくコーディングに集中できます。

個人用マクロファイルに入れてクイックアクセスツールバーに登録

元記事を表示

ディープラーニングと機械学習の回帰を、実測値と予測値の関係のグラフで比較したかった

### DeepLearningで出てくるグラフは

今、この本を勉強しています。
動かしながら学ぶPyTorchプログラミング入門
いつもDeepLearningでサンプルとして出てくるグラフはこんなグラフです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336017/294bac1c-b857-f89e-2cac-ef13418e7b96.png)

ミニバッチでの計算で、Epochの回数とLossのデータで、予測がうまくいっているかどうかを見るグ

元記事を表示

OpenCVでラスタースクロールする

# はじめに
アニメーションGIF大好き。

# 配列(画像)をシフトする numpy.roll()
numpyには配列をシフトする関数がある。

**numpy.roll(a, shift, axis=None)**

– a numpy配列。
– shift 移動量。整数。shiftとaxisはタプルで表現することで複数方向に同時にシフトすることができる。
– axis 配列の軸。省略可能だが明記したほうがいいだろう。省略したらどうなるかは君の目で確かめてくれ!

numpyだからOpenCVの画像にも使える。「配列の軸」はカラー画像の場合`0`,`1`,`2`がそれぞれ`縦`,`横`,`カラーチャンネル`を意味することはすぐに分かると思う。
では、たとえば`axis=1`(横移動)で`shift`に正の値を指定したときに右に動くのか左に動くのかは、慣れて覚えるしかない。高校の時、y=f(x)のグラフとy=f(x-a)のグラフを並べて描いてなぜ「そっち」に移動するのかを悩みつつ自分の頭で理解するのと同じだ。

|元画像||
|:-:|:-:|
|![ocean_small.j

元記事を表示

Swiftのイベントハンドラー的な実装をPythonでもやってみた備忘録

#はじめに
Swiftのイベントハンドラー的な実装をPythonでやってみた備忘録。
#####例その1: EX1
`(str)->None`型のインスタンス変数を`greeting`というインスタンスメソッドで呼び出しています。
`handler_test.cb_func = lambda x: print(f’Message received: {x}’)`でそのインスタンス変数にラムダ式を代入しています。
この例のラムダ式ではハンドラーからの値をプリントしているだけです。

#####例その2: EX2
`(dict)->(str)`型を引数(handler)にもつ`req_weather_info(self, handler)`というインスタンスメソッドです。
`callback_func(**kwargs)`という関数を引数にして`handler_test.req_weather_info(handler:callback_func)`を呼んでいます。
この例ではハンドラーからの値をプリントして、”Succeeded”という文字列をハンドラーに返しています。

例ではEX1

元記事を表示

Python_FlaskでLine Chat BOT(スクレイピング+API)

#概要
AIチャットBOT +スクレイピング = POST + API +BS4の学習の体験に役立てる記事となることを願います。
最終的な目的として、Lineの1つのBotによりいろいろなサービスと連携でき統合していきたいと思います。
(秘書みたいなものを作りたい。)
##成果物
https://liff.line.me/1645278921-kWRPP32q?accountId=621otkwb&openerPlatform=native&openerKey=talkroom%3Amessage#mst_challenge=XC5NTvj9TrdRKQK5uqwVADAMrvCYbugYb9F4RvYD2jI
##環境
Python:Flask
Heroku
line-bot-sdk
BeautifulSoup4
pya3rt(リクルートのAIチャット)
requests
##構成
“`:構成
project
├── main.py
├── requirements.txt
├── Procfile
└── runtime.txt
“`
##手順
###1.準備リクルートAIch

元記事を表示

ABC202A~DをPythonで解いてみた。

#エイシングプログラミングコンテスト2021(ABC202)
A.[Three Dice](#A)
B.[180°](#B)
C.[MadeUp](#C)
D.[aab aba baa](#D)
[最後に](#final)

問題等引用元:エイシングプログラミングコンテスト2021
https://atcoder.jp/contests/abc202

使っている入力コード

“`Python
import sys
readline = sys.stdin.readline
readall = sys.stdin.read
ns = lambda: readline().rstrip()
ni = lambda: int(readline().rstrip())
nm = lambda: map(int, readline().split())
nl = lambda: list(map(int, readline().split()))
prl = lambda x: print(*x ,sep=’\n’)
st

元記事を表示

話題のAWS App RunnerをPython3 × Flaskで試してみる

https://www.youtube.com/watch?v=HJsULvSJWes

## 概要

つい先日AWSから発表されたApp Runnerを試してみたのでメモ書き。

巷では「GCPの[Cloud Run](https://cloud.google.com/run)に似た感じのもの」と言われているみたいですが、僕はそちらのサービスを使った事がないため、今回はなかなか新鮮でした。

実際の体験やドキュメント読んだ上でざっくり説明するなら、

アプリのソースコードを渡すだけで簡単にデプロイ可能かつ、面倒なインフラ設定(ネットワーク、オートスケーリング、ロードバランシング、SSL、CI/CDなど)は全てAWS側が勝手にやってくれるサービス

といった感じでしょうか。(違ったらごめんなさい…。イメージ的にはLambdaに似てるかも)

通常、何かアプリをデプロイしようと思ったら諸々の手順を踏む必要があったりしますが、App Runnerを使う場合、

– GitHubと連携してソースコードをインポート
– ちょっとした設定(C

元記事を表示

棒読みちゃんをPythonから喋らせる(http連携)

#経緯
WEBカメラの映像をリアルタイム解析し、何かあったら棒読みちゃんに喋らせる、というプログラムを画策していた。その中の喋らせる部分のピンポイントな記事がPythonだと見当たらなかったので書いてみた。

#まとめ
喋らせたい内容とかをURLパラメータにした上で`requests`モジュールで棒読みちゃんのhttpサーバにGETリクエスト送るだけ。

#開発環境
– Windows 10 Home 21H1 64bit
– Python 3.9.4
– 棒読みちゃん Ver0.1.11.0 Beta21

#コード
棒読みちゃんを事前に立ち上げた上で以下を実行すると多分喋り出します。
`requests`モジュールは事前にpipとかでインストールして下さい。GETリクエスト送れればいいので`urllib`モジュールでもおそらく出来ます。
棒読みちゃんのサーバポート変えてたら適宜修正して下さい。

“`Python
import requests

def speak_bouyomi(text=’ゆっくりしていってね’, voice=0, volume=-1, speed=-1,

元記事を表示

【Selenium】Googleスプレッドシートを読み込んで会員登録フォームに入力する

# はじめに
@dauuricus さんの[「Googlecolab を使って iRuby で selenium と chromium で徘徊する為に」](https://qiita.com/dauuricus/items/0717c8a08aba7abc7575)の記事で、Google Colaboratory(Google Colab)というGoogleが提供する環境の存在を知りました。やはりGoogleさんはすごいですね。
本記事では、Google Colabに加えて、Googleスプレッドシートも使って、スプレッドシートの内容を読み込み、SeleniumでWebサイトのフォームへ入力することを実現してみます。

 ※ 本記事の内容を利用したことによるいかなる損害・不利益について、筆者は一切の責任を負いません

# やること・対象サイト
Seleniumのテスト用サイトとして提供されているホテルの予約サイトを模したサイトの会員登録ページを対象にします。
https://hotel.testplanisphere.dev/ja/

スプレッドシートのデータをもとにして、Seleni

元記事を表示

エイシングプログラミングコンテスト2021(AtCoder Beginner Contest 202) 参戦記

# エイシングプログラミングコンテスト2021(AtCoder Beginner Contest 202) 参戦記

## [ABC202A – Three Dice](https://atcoder.jp/contests/abc202/tasks/abc202_a)

1分で突破. 書くだけ.

“`python
a, b, c = map(int, input().split())

print(21 – (a + b + c))
“`

## [ABC202B – 180°](https://atcoder.jp/contests/abc202/tasks/abc202_b)

3分で突破. 書くだけ.

“`python
S = input()

d = {‘0’: ‘0’, ‘1’: ‘1’, ‘6’: ‘9’, ‘8’: ‘8’, ‘9’: ‘6’}
print(”.join(d[c] for c in reversed(S)))
“`

## [ABC202C – Made Up](https://atcoder.jp/contests/abc202/task

元記事を表示

Tweepyでフォローした人の画像を保存。

0を入力すると全保存です。
参考にした記事は後日追加します。
問題があればすぐに消します。

“`python
from logging import setLogRecordFactory
import datetime
import os
import tweepy
import config
from time import sleep
import urllib.error
import urllib.request
import cv2
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

# coding: UTF-8
#!/usr/bin/python3
# twitter_savepic
# Version 2.0 / 20210523
# author mio256

CONSUMER_KEY = config.consumer_key
CONSUMER_SECRET = config.consumer_secret
ACCESS_TOKEN = config.token

元記事を表示

ABC202

#はじめに
こんばんは

京都に住んでいる修士2年の大学院生です.
今はまだ修論が本格化していないので,社会人前に基礎情報技術者の資格をとるため,日々勉強しています.意外と範囲が広くて大変だあ,というお気持ちです.CPUやメモリ,ハードディスクのところは覚えることがホント多いですね.
ということで資格の勉強をするほど暇なので,ABC202に参加しました.

今回はこんな感じで割とRateingが上がってくれました.D問題まで解けたのでこれを継続していければうれしいですね.6月中に緑まで上がれたらいいなあ……

![スクリーンショット (148).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465908/2bfa6008-21bd-9701-76ca-7e90a8ed5f23.png)

以下ABC202のリンクです.[https://atcoder.jp/contests/abc202]

#全体の感想
A,Bは簡単でした(7分間).C問題は計算量を気にしながらコードを書いていたら,結構時間がかか

元記事を表示

pyenv globalでversionを切り替えたのに切り替わらない

## 環境
– macOS Big Sur 11.3.1
– pyenv 1.2.27

## 事象
pyenvでPython3.8.9をインストールしました。
`pyenv global 3.8.9` でpythonのversionをスイッチしても、
もともとMacにインストールされている古いPythonを見に行ってしまうという事象です。

“`
% pyenv versions
system
* 3.8.9 (set by /Users/〇〇/.pyenv/version)

% python –version
Python 2.7.16

% which python
/usr/bin/python
“`

## 結論
pythonの実行Pathが差し替えられていない。
ゆえに、Pathを差し替えてあげるために以下をprofileに追加する。
私はzshを使用しているため、 `~/.zshrc` に書き込んだ。

“`
eval “$(pyenv init -)”
“`
ターミナルを再起動するか、`source ~/.zshrc` コマンドで設定を反映する。
pyt

元記事を表示

Twitterいいね画像定期保存Bot

#イントロ

##ウマ娘っ!!
ケモミミストでありTwitterランドに生息している身としては
ウマ娘は今や生活必需コンテンツとなっている。
平日のお昼休み終了5分前、APEX初動落ち、
ありとあらゆるストレスを軽減する効力を持ち、いつかガンにも効くのは言うまでもないだろう。

尊い画像が無限に流れてくるTL、一つ一つの画像に合掌しているわけだが、
多すぎて見返せない。あれっ、ネイチャがトレーナー宅で同棲している激エモ漫画どこいった….
2次絵は一期一会、今保存しておかないと後々、神絵師垢が突然鍵垢にするかもしれないし、必ず見返せると保証できない。

##ゴール
* いいねした画像を定期的にチェックして、保存するBotの運用
* 保存した画像をGoogleフォトに保存、尊いアルバムを作成する

##対象読者
* 自分のいいね欄の絵でアルバムを作ってニヤニヤしたい人

##非対象読者
* TwitterAPIを使用するための導入手順が知りたい人
* (はるか昔にdevアカウントを作っており、各種鍵が残ってたので今回はそれをそのまま使って作りました。私も今どうやって作るのか知りません

元記事を表示

PythonのロギングでGmail送信する

ロギングの全体像としては下の記事をご覧いただきまして、今回はメール送信部分のみ扱います。

# はじめに

Gmail経由でエラーログを送信したいと思ったわけですが、これといった記事が見つからなかっため困っていました。

何とか動作したため、ここに共有しておきます。

# 全体の流れ

`logging.handlers.SMTPHandler()`はTLSに対応していないため、オーバーライドして`TlsSMTPHandler()`を作ります。

そこから生成したインスタンスにおいて、Gmail用の設定を流し込んで完了です。

# 実際のコード

“`python:module.py
import logging
import logging.handlers

class TlsSMTPHandler(logging.handlers.SMTPHandler):
“””
loggingをGmailで送信させるために、SMTPHandlerをオーバーラ

元記事を表示

OTHERカテゴリの最新記事