Python
競プロの問題でビットフラグの判定の問題があった。 atcoder.jp ビットフラグの判定は初見だったので各桁が0か1かを文字列から取り出して判定したが、他の人の解答を見るとどうも自分の書き方はスマートではない。 ということでスマートなビットフラグの判定…
>>> [1, 2, 3, 4][::-1] [4, 3, 2, 1] >>> "apple"[::-1] 'elppa' リストまたは文字列を[::-1]すると反転する。
5桁の数字で余った位を0埋めする場合 例: 123 を 00123と表示する。 >>> print("{:05d}.format(123)") 00123 >>> print("{:05d}".format(12345)) 12345 >>> print("{:05d}".format(123456)) 123456 上は0埋め、5桁、decimal(10進数)。 4桁なら"{:04d}".forma…
if __name__ == "__main__": __name__はモジュールの名前が入っている特殊な変数で、通常import hogeをしてモジュールを取り込むと、そのモジュールの__name__はhogeとなる。 例えば、 import numpy as np print(np.__name__) >>> numpy しかし、python hoge…
最小公倍数は最大公約数を使って簡単に求めることができるので、まず最大公約数を求める。 最大公約数 最大公約数を求める最も有名なアルゴリズムはユークリッドの互除法である。 wikipediaから引用すると、 2つの自然数a, b (a >= b)について、aのbによる剰…
使う機会があるのかわからないが、変数を動的に生成する方法を紹介する。 基本的に辞書、または変数名が数字でいい場合は配列の方が使い勝手はよい。 for i in range(5): exec("var_{} = {}".format(i, i)) print(var_0) => 0 print(var_1) => 1 print(var_2…
Pythonで欠損値を扱う際、主にNone (Null), NaN(Not a Number)を扱うことになる。今回はこれらの違いについて説明する。 None (Null) NoneはPythonに標準で備わっているシングルトンオブジェクトである。PythonではNullをNoneとして扱い、NoneのみがNoneであ…
Pythonのpickleはプログラム実行中にできたオブジェクトをバイト列にしてファイルとして保存する。このオブジェクトをバイト列にする作業を直列化(serialize)、バイト型列のファイルを元のデータ型でオブジェクトに戻す作業を非直列化(deserialiize)とい…
擬似乱数を生成する際にseedを指定することができる。実は疑似乱数はあくまで'疑似'乱数なので、再現性のある乱数として利用することが可能だ。その再現性のある乱数を生成する際に指定するのがseedである。Pythonのrandomモジュールではrandom.seed()で指定…
Google Colaboratory上でmatplolibでプロットしていたら、ハマったポイント。 複数セルにまたがって書くと初期化される? pltのインスタンスを作成したら、plt.show()するまでセルを変えない方が良い? Plot disappears after executing cell second time · …
Google Colaboratoryでプロットしたグラフを保存するにはplt.savefig()だけではできない。 import matplotlib.pyplot as plt from google.colab import files # グラフを作成したら plt.savefig("file_name") files.download("file_name") これでローカルの…
yieldを理解するために、まずはIterablesについて解説する。 Iterables listを作成すると要素を一つずつ読むことができる。この要素を一つずつ読み出す作業をiterationと呼ぶ。 >>> sample_list = [1, 2, 3] >>> for i in sample_list: ... print(i) 1 2 3 s…
Sparkのインストール SparkはJavaのバーチャルマシン(JVM)上で動くので、JVMを入手する。JVMはJava SE Development Kit(JDK)をインストールすることで手に入る。2018年8月21日現在ではバージョン10が最新だ。以下のリンクから自分のマシンに合ったものを…
Sparkのコアのデータ構造は(RDD: Resilient Distributed Dataset)である。pandasのDataFrameのようにデータセットをRDDにロードして、メソッドでデータを扱う。 PythonでSparkを使うにはPySparkを使う。SparkはJavaでできているので Py4Jによって、Javaの…
Google ColaboratoryにはPythonでGoogle Driveを扱うためのPyDriveが標準で入っていないので、初めに!pip install -U PyDriveする。 そしたら必要なライブラリを読み込む。 !pip install -U PyDrive from pydrive.auth import GoogleAuth from pydrive.drive…
GitHub - Kaggle/kaggle-api: Official Kaggle APIの簡単な要約。 pip install kaggleでkaggleのコマンドを使えるようにする。 https://www.kaggle.com/<username>/accountにアクセスし、'Create New API Token'を選ぶ。 すると、kaggle.jsonがダウンロードされる。こ</username>…
Pythonのメモリの使用量を調べるためにnumpyのndarrayの.nbytesとsysモジュールのgetsizeof()を使ってみたら返って来る値が違った。 ndarray.nbytes() import sys sys.getsizeof(object) .nbytesはオブジェクトの中身だけ、getsizeof()はオブジェクトそのも…
最近Mac OSをクリーンインストールしたのでHomebrewを使ってpythonを入れ直した。 しかしPATHを通してもpythonのPATHが/usr/local/bin/に向いていない。 どうやら、Homebrewで入れたpythonのコマンドは2系のことを指し、3系はpython3というコマンドが存在す…
fitは与えられたデータセットの統計量を算出し、transformはデータセットの統計量を元にデータを変換(標準化、正規化)する。 fit_transformはfitとtransformを両方順に行う。 訓練用データには統計量を算出するfit_transform、テスト用データには訓練用デ…
from numpy.linalg import inv a = np.array([[1., 2.], [3., 4.]]) ainv = inv(a) 参考 https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.linalg.inv.html