PythonをAIなどで使おうと思ったら、かならず使うことになるのが
NumPyである。
様々な計算処理をしようとすると、はやり配列を使って高速に計算する必要がでてくるので、配列をサポートしているNumPyは避けて通れない。
NumPyにあるtutorilaなどを参考に勉強したり、ネット上にウヨウヨ存在する説明をみて勉強するのもあるのだが、もうちょっと面白い勉強方法、あるいは腕試しには、
100 numpy exercises が良いかも。
題名どおり、100の小問で構成されている。
難易度が3段階になっていて、やさしい、基本的なものから、次第に難しい問題になっているようだ。
最初は1、2行で十分な簡単な問題ばかりだが、次第に長いプログラムを書かないといけなくなり、20行程度のプログラムになることもある。
問題と解答があり、どうしてそう書けば良いのかは自分で考えよう、というスタンスのようである。
もちろん、世の中には延々と解いて、解説ページを公開している人もいる。
解説ページを読むより、解答が理解できなかったら、ネットで色々探して、理解できるようになろう。
さらに、出題範囲以外のことを色々試すことをお薦めする。
あ、書き忘れていたことがある。
もちろん、全部英語だけれど、やさしいプログラミング英語なので、問題ないだろう。
どうせ、プログラムをいっぱいやるようになったら、英語しかない世界にすぐなるのだし、プログラミング英語に慣れる良い機会だ。
まず、最初の問題。こんなに簡単で、分からない人はいないはずだ。
1. Import the numpy package under the name np (★☆☆)
import numpy as np
そして最終問題は、こんな感じだ。
100. Compute bootstrapped 95% confidence intervals for the mean of a 1D array X (i.e., resample the elements of an array with replacement N times, compute the mean of each sample, and then compute percentiles over the means). (★★★)
# Author: Jessica B. Hamrick
X = np.random.randn(100) # random 1D array
N = 1000 # number of bootstrap samples
idx = np.random.randint(0, X.size, (N, X.size))
means = X[idx].mean(axis=1)
confint = np.percentile(means, [2.5, 97.5])
print(confint)
こんな問題に対するプログラムをすらすら書けるようになったら、もちろんNumPyのお勉強は優秀な成績で卒業だ。
NumPyの勉強は、通過すべき最初のゲートみたいなものだ。どんどん先へ行こう。