Pythonの書き捨てスクリプトを書く速度を上げられるように、Pythonスクリプトのテンプレートを考えてみました。 経験上、どんなスクリプトでも以下を心がけると良いことが多いです。 コードは全部メイン関数の中に入れて、グローバル変数は許容しない 出力は…
bashスクリプトの定番テクニックで、set -uを冒頭に書いておくことで、未定義の変数をうっかり使った時点でスクリプトを終了させるようにする、というものがあります( 参考 )。しかし、PATHやPYTHONPATHにパスを追加するときに困ることがあります。例えば…
std::setやstd::multisetで末尾の要素を削除するには、https://www.geeksforgeeks.org/how-to-delete-last-element-from-a-set-in-c/ で紹介されているテクニックを使います。例えばsをstd::setのオブジェクトとした場合、std::prev(s.end()) が末尾の要素を…
NumPyでベクトルの長さを1に正規化するには、np.linalg.normを使います。 ベクトルの例 例えば、要素数3のベクトルの長さ(より正確には、ユークリッド距離。すなわちL2ノルム)を1に正規化するには以下のようにします。 vec = np.array([3.0, 4.0, 5.0]) un…
Python 3の random.randint() と NumPy の np.random.randint() には次のような微妙だが重大な違いがあります。 random.randint(a, b) a以上b以下の整数を1個選んで返します。以下のコードで、random.randint(3, 7)が3以上7以下の整数をランダムに生成するこ…
NumPyのブロードキャストのルールについて曖昧にしか理解していなかったので調べました。わかってしまえば簡単です。 2つのarrayの間でブロードキャストができるかどうかは、2つのarrayのshapeによってのみ決まります。アルゴリズムは以下です。 もし2つのa…
tensorflowの初心者向けページをもとに、tensorflow.kerasのチュートリアル記事を読みながら、MNISTデータセットでかんたんな分類器を学習するサンプルコードを作成しました。
NumPyのconcatenate(), vstack(), hstack(), dstack(), stack()の違い について毎回混乱するのでまとめました。 concatenate() 複数のアレイを、既存の軸に沿って結合する関数です。 基本的に、後述するvstack(), hstack(), dstack()の上位互換がconcatenate…
多分15年以上Cygwinを使い続けていますが、いい加減WSLに移行していこうと考えています。以下、CygwinでできていたことをWSLでやるためにはどうすればいいかというメモです。 ExplorerのファイルをDrag & Dropしたときに/mntで始まるパスに自動変換 Cygwinで…
WSL2上のUbuntu 20.04にemacsをインストールしようとして $ sudo apt install emacs としたところインストールできませんでした(エラーメッセージは記録し忘れました)。 お決まりの $ sudo apt update $ sudo apt upgrade したあともう一度最初のコマンド…
emacsを使うとき、検索はC-s、置換はM-%を使う以上のことをこれまでしてきませんでした。より高度な検索・置換の仕方をまとめました。 検索 単語単位で検索 いくつか方法があります。ユースケースに応じて使い分けてください。 1つ目の方法は、C-s M-s w と…
scikit-imageというPythonのライブラリを使うと、サンプル画像をさっと取ってくることができます。 コード例は以下です。 import skimage print("scikit-image version: {}".format(skimage.__version__)) coffee_image = skimage.data.coffee() print(coffe…
久々にtravis-ci.orgにアクセスしたら "Since June 15th, 2021, the building on travis-ci.org is ceased. Please use travis-ci.com from now on." とメッセージが出たので、慌ててtravis-ci.comに移行したときのメモ。あとから思い出しながら書いたので抜…
Python 3で外部コマンドを呼ぶにはsubprocessモジュールで提供されているrun()を使うことが推奨されるのですが、毎回使い方を調べてしまっているので自分用にまとめます。順を追っていかないと引数の意味を理解しづらいところがあるので、冗長ですが簡単な例…
毎回調べてしまっているのでメモ。 import datetime now = datetime.datetime.now() print(now) で 2021-05-31 21:10:18.332820 というふうに表示できるのだけれど、個人的には秒までで十分なことが多いので、以下のようにするのが多いです。 import datetim…
Pythonのunittestをちゃんと使ったことがなかったので、使い方について調べてまとめました。Windows 10のAnaconda Python 3.8.5で動作確認しています。 もっとも小さな例 被テストコードとテストコードとを同一のスクリプトに記述した小さな例を以下に示しま…
サーバにてmatplotlibを使ってグラフを作成し、ファイルに保存することがよくあるのですが、実装するたびにググりまくって非効率なので、私が高確率で使う機能をテンプレ化しました。 さっそくコードを以下に示します。 import matplotlib import matplotlib…
恥ずかしながらC++のvectorのassign(n, val)という関数を知らなかったのでメモです。 よく似た関数に、resize(n, val)という関数があります。以下のコードで挙動を比較してみます。 #include <iostream> #include <vector> void print_vector(const std::vector<int> &vec) { for (a</int></vector></iostream>…
Windows PowerShell (この記事の執筆時点でバージョンは5.1) でTabキーを押したときの補完方法をbashのようにする方法について調べました。 デフォルトでの補完方法 まず、デフォルトでのWindows PowerShellの補完方法について説明します。例として、2021010…
PowerShellにてAnaconda Pythonの仮想環境をactivateしようとしてactivate (仮想環境名)というコマンドを実行しても何も起こりません。これを修正しようとしたときにやったことのメモです。注:私はAnaconda PythonにもPowerShellにも精通していないため、こ…
普段使わなくて覚えられないものを使いこなせるようになるようメモ書き。Windowsで動作確認しています。Ctrl / Shift / Altのコンビネーションが複雑で覚えるのが大変です… カーソル移動 Ctrl + Enter: カーソルがどこにあっても、カーソルの下に空白行を作…
Python 3の標準ライブラリであるsqlite3を使って、SQLite と呼ばれるデータベースを触ってみるメモです。 基本 テーブルを作成 以下のコードでは、都道府県のデータを格納するprefecturesという名前のテーブルを定義します。このテーブルは、name(都道府県名…
TensorFlowやKerasを使うと遭遇する logits という用語、ざっと検索してもすぐに意味が出てこなかったので書いておきます。なお、この用語は複数の意味を持つ単語なので注意願います。この記事ではあくまで TensorFlow / Keras でのlogitsの意味を説明してい…
Python 3にて以下のように例外オブジェクトをprint()するコード try: raise ValueError except Exception as e: print(e) を実行しても、以下のように何も出力されません。 結論からいうと、上記のコードを以下のように修正すると try: raise ValueError('va…
共有設定を使う場合 2020年3月頃からプレビュー機能として提供されている、設定を共有する機能を有効にすることで、複数のマシンでVSCodeの設定を共有できます。参考: 「Visual Studio Code」が設定の同期に対応、Insider版でテスト中 - 窓の杜 左下の歯車…
AtCoderやCodeforcesなどの競技プログラミングサイトでは、通常、標準入力から入力を受け取ります。例えばPythonで回答する場合、あなたの回答(例としてsolve.pyとします)は、入力が書かれたテキストファイルinput.txtが $ python solve.py < input.txt の…
競技プログラミングでC++を使うときに、入出力を高速化する目的でおまじないのように書かれる ios_base::sync_with_stdio(false); cin.tie(0); の意味、実はよくわかっていなかったので c++ - Significance of ios_base::sync_with_stdio(false); cin.tie(NU…
Google Code Jam 2020 Round 1Cの最終問題であるOversized Pancake Choppersの解説です。 この問題はTest Set1から3の3つから構成されます。本番ではTest Set 1のみ解けました。この記事ではTest Set2とTest Set3について解説します。 問題概要 N個のパンケ…
約1年ぶりにCodeforcesに出場しました。Div. 2の4問目、Orac and Medians が解けそうで解けませんでした。終了後、解説を読みながら考えをまとめました。 問題概要 数列が与えられる。この数列の任意区間を選び、その区間のすべての値を、その区間の中央値で…
Google Kickstart 2020 Round 1Bの最後の問題、Wandering Robot についてやっと理解できたので解説を書きます。 問題概要 W*Hの盤面が与えられる。盤面には ある矩形1つ分の穴が空いている。ロボットは左上の(1, 1)を出発し、等確率で右か下に移動する。た…