Python3関連のことを調べてみた2020年09月12日

Python3関連のことを調べてみた2020年09月12日
目次

Python3.8から始めるモダン型付けvol.1 (without class)

# イントロダクション
 最近オライリーの『プログラミングTypeScript』を読み、非常に感銘を受けました。
 ジェネリクスの奥深さ面白さ、型がある事による関数やオブジェクト情報の増加、そして生まれる安心感……。型無しでは不安で昼寝できない身体になってきました。

 そんな折『飛騨高山Pythonモクモク会』で今月も発表することになり、大概ネタ切れ状態だった私は思いました。そうだ、めっちゃ感銘を受けたTypeScriptを絡めれば楽しく発表できるぞ、と。

 幸いPythonにも型ヒントがあります。Pythonの型システムはTypeScriptに比べれは少々貧弱だと思っていたのですが、調べてみたらなかなかどうして! これは便利という機能が揃っていました(特に3.8以降)

 この記事ではシリーズを通して型システムの奥深さ面白さ便利さを少しでもお伝えできればと思っています。

##完全にネタかぶりしました
 途中まで書いた時、ふとPyConJP2020の演目を見ていたら『Pythonでコンソールに綺麗なグラフを描画できる「AsciichartPy」使ってみた。

![Screen Shot 2020-09-12 at 2.18.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535270/8026d956-b17b-1774-b651-a44a5c677d3b.png)

# はじめに
グラフといえば[matplotlib](https://matplotlib.org/)が恐らく一番有名ですが、コンソールに直接ASCII文字としてグラフを描画する[AsciiChart](https://github.com/kroitor/asciichart)という便利なライブラリがあります。
ざっと見たところ、未だQiitaで紹介されていそうな記事が見当たらなかったので少しでも参考になればと思い、書いてみました。

# pip

pipコマンドで`asciichartpy`をインストール。

“`sh
$ pip install asciichartpy
“`

# サンプルコード

トップにある画像で使ったサンプルソースです。
`cfg`というパラメータで、色々

元記事を表示

【Udemy Python3入門+応用】  64. 名前空間とスコープ

**※この記事はUdemyの
「[現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル](https://www.udemy.com/course/python-beginner/ “現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル”)」
の講座を受講した上での、自分用の授業ノートです。
講師の[酒井潤](https://twitter.com/sakaijun “酒井潤”)さんから許可をいただいた上で公開しています。**

##■名前空間とスコープ
“`python
animal = ‘cat’

def f():
print(animal)

f()
“`
“`:result
cat
“`
ここでの `animal` はグローバル変数なので、もちろん `f()` 内で呼び出すことができる。

“`python
animal = ‘cat’

def f():
animal = ‘dog’
print(‘after:’, animal)

元記事を表示

【Udemy Python3入門+応用】 まとめ

**※この記事はUdemyの
「[現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル](https://www.udemy.com/course/python-beginner/ “現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル”)」
の講座を受講した上での、自分用の授業ノートです。
講師の[酒井潤](https://twitter.com/sakaijun “酒井潤”)さんから許可をいただいた上で公開しています。**

[8. 変数宣言](https://qiita.com/cyrus_qiita/items/bfe0c39b812de5b3dbf7)
[9. まずはprintで出力](https://qiita.com/cyrus_qiita/items/cfa484d2de1c9c216348)
[10. 数値](https://qiita.com/cyrus_qiita/items/4556bcacbc1c95bb7c50)
[11. 文字列](https://qiita

元記事を表示

【Udemy Python3入門+応用】 63. ジェネレーター内包表記

**※この記事はUdemyの
「[現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル](https://www.udemy.com/course/python-beginner/ “現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル”)」
の講座を受講した上での、自分用の授業ノートです。
講師の[酒井潤](https://twitter.com/sakaijun “酒井潤”)さんから許可をいただいた上で公開しています。**

##■ジェネレーター内包表記
#####◆普通に記述した場合
“`python
def g():
for i in range(10):
yield i

g = g()

print(type(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))

“`
“`:result

0
1
2
3

元記事を表示

pythonでスゴロクゲームと足し算ゲーム

同じ変数への代入等あり

テキストにあった内容を使ってpythonの挙動確認と備忘録

# 30までの交互スゴロクゲーム

“`python
pl_pos = 1
com_pos = 1

while True:

input(“enter-playerが動く”)
pl_pos = pl_pos + random.randint(1,6)

if pl_pos>30:
pl_pos = 30

banmen()

if pl_pos ==30:
print(“plのかち”)
break

input(“enter-comが動く”)
com_pos = com_pos + random.randint(1,6)

if com_pos>30:
com_pos = 30

banmen()

if com_pos ==30:
print(“comの

元記事を表示

Python3 multiprocessing starmap で大きい配列データを扱うとエラーが出る

Python3 multiprocessing.Pool で starmap で大きめな画像データ(配列データ)を複数処理すると以下のようなエラーがでます.

“`
Reason: ‘error(“‘i’ format requires -2147483648 <= number <= 2147483647") ``` メモリが足りたとしても, なにかしらの原因で内部でのインデクシングの範囲が int32 を超えてしまったようです. Process など別の方法で処理が必要そうですが, プロセスで共有したい変数は multiprocessing.Array などで定義しないとならずめんどいですね...

元記事を表示

一部処理の他ジェネレーターへの委譲

複雑なジェネレーターを記述する際には、yield from命令を利用することで処理を分離でき、コードがより見通しやすくなる。

“`gen_from.py
def read_files(*files):
for file in files:
yield from read_lines(file)

def read_lines(path):
with open(path,’r’,encoding=’UTF-8′) as file:
for line in file:
yield line.rstrip(‘\n’)

for line in read_files(“./path/1″,”./path/2″,”./path/3″):
print(line)
“`

独習Pthon 9.2.4 より引用

元記事を表示

Excelのメールリストを元にメールを送るコード

# なぜこんなものを?
業務(業務以外でも飲み会の出欠とか)で星取り表を作って、それに基づいてまだ未提出の人に催促を行うような、いわゆる雑務はかなりあります。そこでPythonで処理することにしました。ぶっちゃけMicrosoft Office365を使っているような企業ならAutomate Flowを使えばこんなのノーコードでできそうですが、身の回りで使える環境がないためちゃちゃっと用意しました。

## 参考にしたもの
* 退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (2017/6/3)Al Sweigart(著), 相川 愛三 (翻訳)

## 用意するもの
下のような「maillist.xlsx」 というファイルを用意します。
![コメント 2020-09-11 144102.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339767/603782de-4a69-1366-500e-44a3a796b8ab.png)

“`Python:mail

元記事を表示

リモートルンバを作ろう【ソフトウェア編】

#はじめに
 本記事は[リモートルンバを作ろう【ハードウェア編】](https://qiita.com/Yurix/items/016e20ab924d613694cb)の続編となります。まだ前編をご覧になられていない方ははじめにそちらをご覧ください。

#目標
 今回は前回までに準備したルンバを実際に制御していきます。

#環境
 使用したプログラミング言語は**Python3.7**です。ラズパイOSには標準でインストールされているかと思います。一般的にルンバを制御する場合ROSを用いる方が多いようなのですが、当方ROSはあまり使ったことがなく慣れておりません。今後のルンバを発展させる上で柔軟性や理解し易さの観点から、本記事ではPythonのみを使用したルンバの制御となります。

#ソースコード
###1.制御
####1-1.実機準備
 基本的にはルンバを制御するコードはiRobotが公式にだしている仕様書[iRobot Roomba 500 Open Interface (OI) Specification](https://www.irobot.lv/uploaded_fil

元記事を表示

リモートRoombaを作ろう【ハードウェア編】

#はじめに

 皆さんはルンバは制御できるという事をご存じでしたか?ルンバには標準でシリアルポートが搭載されており、そのポートを使用すれば任意にプログラムしたとおりにルンバを動かすことができるそうです(大分昔から有名な話だそうで)。

 私も最近ルンバを手に入れ、せっかくなので色々遊んでみることにしました。最後までお付き合いいただけると幸いです。

#目標

 本記事ではルンバをリモートで操作することを目標にしています。【ハードウェア編】と【ソフトウェア編】で記事は分かれており、今回はルンバを制御する前の下準備についてまとめたものとなります。
 某ウイルスの影響で帰れない実家等でも、ルンバがあれば気軽にリモートで帰省とかできちゃうかも。

![IMG_20200909_112758.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629378/290a1487-16db-1ecd-fa20-9b43d36e3292.jpeg)

#使用機器

####1.Roomba
 制御可能なルンバには限りがありま

元記事を表示

ハイパーパラメータチューニング2

# はじめに
[前回](https://qiita.com/yassyyuki/items/d55c36bde9b865d83b8d)、CNNでの手書き文字認識のモデルを作成し、グリッドサーチを使用してハイパーパラメータチューニングを行いました。これによって、activation,optiizer,epoch,batch_sizeの値をどうすれば精度の高いモデルが得られるのかについてがわかりました。
今回は、CNNのfilter属性に関しての検証を行っていきたいと思います。

# ライブラリのインポート

“`py
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Activation, Conv2D, Dense, Flatten, MaxPooling2D, Reshape, Input
from tensorflow.keras.callbacks import EarlyStoppin

元記事を表示

Pythonで拡張子を変換するコード

備忘録やOUTPUT的な意味での蓄積

#作成目的
作業用の画像をすべてpngに変換したいことが定期的に起こるので、対象フォルダに格納されている画像をすべてpngに変換する

#作成環境
・windows10
・Anaconda
・python3
・Jupyter Notebook

#ドキュメント
①PNGに変換したいフォルダ名を入力
②folderがなければcurrent_folder内に、png_folder を作成し画像をpngへ変換
③すでに同じフォルダ名がある場合、誤操作を防ぐためにErrorになる

#ライブラリの読み込み

“`python:All Necessary Libraries.py
import pathlib
import os
import shutil
import pprint
import numpy as np #numpy使ってないです.癖です.
from glob import glob
from PIL import Image
from tqdm import tqdm
from pathlib import Pat

元記事を表示

研究者におすすめ サイエンスマガジンを日本語でチラ読みする

研究者におすすめ サイエンスマガジンを日本語でチラ読みする

3大科学雑誌(Nature, Science, Cell)のひとつ、「サイエンス誌」。
幅広い分野で世界最高峰の研究に触れることができます。
サイエンス誌にはEメールアラートとRSS購読のサービスが充実しています。 

https://www.sciencemag.org/about/email-alerts-and-rss-feeds

このサイエンスのRSSをGoogle翻訳した後、エクセルにまとめ、自分のWEBページにアーカイブしています。今回は、RSSを翻訳し、エクセルにまとめるコードを紹介します。

目的

サイエンスマガジンのRSSを読みこみ、自動翻訳をかけ、エクセルファイルに落とす。

方法

python3
pandas
feedparser
googleapiclient

コード

https://github.com/isamimasi/sciencem

元記事を表示

PaizaからBacklog登録(Python3)

# tl;dr
Paizaを使ってとりあえずプログラムでBacklogの課題を登録したい人向けだよ

# 環境とか
言語はPython3系

### 環境構築は抜きにしてとりあえずBacklogに課題を登録しよう
[Paiza](https://paiza.io/ja)はオンラインエディタで、環境を構築しなくてもプログラミングができるサービスです。

下記プログラムの、「#####」のところを書き換えれば、Backlogの課題が登録できます。

1. 「api_key」は、Backlogのメニューから「個人設定」→「API」→「新しいAPIキーを発行」で発行できます
2. 「space_key」は、利用しているBacklogのURL「https://#####.backlog.jp/」の「#####」の部分のことです。ドメインが「backlog.com」のときもあるので、その部分は適宜書き換えてください。
3. 「project_id」は、プロジェクトのID(数字)です。当該プロジェクトの「課題」→画面右の「…」→「CSV」でダウンロードしたCSVの「プロジェクト」列(B列)を見ると早

元記事を表示

【Python】numpyの平均、標準偏差、最大・最少におけるinfとNaNの扱い方

#発生した問題
python3でnumpyを用いた画像処理(画像評価)ソフトの出力に,
平均・標準偏差・最大・最小にinfとNaNが含まれる.

“`python:sample_code.py
import numpy as np
img = #なんか画像の配列

print(np.max(img))
print(np.min(img))
print(np.mean(img))
print(np.std(img))

>inf
>-inf
>NaN
>NaN
“`

こんな感じ
結構ハマった

#inf,NaNとは
そもそもinfとかNaNって**なんなん**でしょうね?(激うまギャク)
調べると沢山情報が出てきました.
###inf
infinityの略.無限大を表す.
-infは負の無限大なわけですね.

###NaN
>浮動小数点数にはNaN (Not a Number, 非数) と呼ばれる、実数の異常な値を表す特殊な数があります。
これは無限大-無限大、0.0/0.0といった不定形や、負数の平方根、負数の対数といった実数で表せない計算を行った場合に発生します。

[NaNの

元記事を表示

Youtubeをmp3化して超安全にダウンロードする方法【Python】

今回はYouTubeにあげられている動画をmp3としてダウンロードする方法をまとめてみます。

参考サイトやgithubも載せます。

ミスや疑問点がありましたらコメントしていただけると幸いです。

*注意点*

あくまで個人的にYouTubeにアップロードした動画をダウンロード、そしてmp3化することを主としております。

そのため、自分以外の誰かが投稿した動画から手に入れた音源を使って問題が起きても一切の責任を負いません。

私的利用は大丈夫だという声も多いですが、自己判断で行うようにしてください。そのつもりで以下ごらんください!

# 完成品
あくまで例です。
https://www.youtube.com/watch?v=E8bUKuF9v10 をmp3化するとします。

### 開いたところ
![2020-09-10_22h16_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582590/0c8aa9d0-41da-9284-944b-048d5d1c8578.png)

![

元記事を表示

pandasで横持ちデータを縦持ちデータへ変換する方法

まずは下記でデータフレームの用意をします。

“`python:DateFrameの用意
import pandas as pd

values = [[‘1’, ‘John’, ‘somekey1-1’, ‘somevalue1-1’, ‘time1-1’, ‘somekey2-1’, ‘somevalue2-1’, ‘time2-1’],
[‘2’, ‘Tom’, ‘somekey1-2’, ‘somevalue1-2’, ‘time1-2’, ‘somekey2-2’, ‘somevalue2-2’, ‘time2-2’],]
df = pd.DataFrame(values, columns=[‘id’, ‘name’, ‘key1’, ‘value1’, ‘time1’, ‘key2’, ‘value2’, ‘time2’])
df
“`

上記コードで下記のデータが作られます。

| | id | name | key1 | value1 | time1 | key2 | value2 | time2 |
| — | — | — |

元記事を表示

Spacemacsでpyrightを使う

[Spacemacs](https://github.com/syl20bnr/spacemacs/tree/develop)でLSPの要となる[lsp-mode](https://github.com/emacs-lsp/lsp-mode)のうち[lsp-pyright](https://github.com/emacs-lsp/lsp-pyright)によってPythonの型チェッカー[pyright](https://github.com/microsoft/pyright)が使えるようになったことを最近知ったので使う

(従来の[pyls](https://github.com/palantir/python-language-server)でいいじゃん説はあるが最近なんか重い気がしたので速いと評判のpyrightを試している)

## pyrightインストール
node使ってるならnpmでpyrightをインストールしておく

“`bash
$ npm install -g pyright
“`

## SpacemacsでPython LayerのLSPサーバをp

元記事を表示

言語処理100本ノック2020やってみた part2

#はじめに
[言語処理100本ノック2020やってみた part1](URL:https://qiita.com/KawabataK/items/18322b538c9912e08867)

* コマンドの説明は自分の解釈なのであしからず

#目次
###第2章: UNIXコマンド
[事前準備](#事前準備)
[10. 行数のカウント](#10-行数のカウント)
[11. タブをスペースに置換](#11-タブをスペースに置換)
[12. 1列目をcol1.txtに,2列目をcol2.txtに保存](#12-1列目をcol1txtに2列目をcol2txtに保存)
[13. col1.txtとcol2.txtをマージ](#13-col1txtとcol2txtをマージ)
[14. 先頭からN行を出力](#14-先頭からN行を出力)
[15. 末尾のN行を出力](#15-末尾のn行を出力)
[16. ファイルをN分割する](#16-ファイルをn分割する)
[17. 1列目の文字列の異なり](#17-1列目の文字列の異なり)
[18. 各行を3コラム目の数値の降順にソート](#18-各行を3コラ

元記事を表示

OTHERカテゴリの最新記事