NumPyの様々な関数・機能を使いこなすため、練習問題に取り組みましょう。
npという名でインポートしなさい。tanhを$\tanh(x)\equiv\frac{e^x-e^{-x}}{e^x+e^{-x}}$として定義しなさい。np.tanhを用いて$\tanh(\pi/2)$を計算し、上と一致することを確かめなさい。sincを${\rm sinc}(x)\equiv\frac{\sin x}{x}$として定義しなさい。sincが$x\neq0$のとき$\frac{\sin x}{x}$, $x=0$のとき$1$を返すように定義し直しなさい。以下の数列を格納した1次元配列を生成しなさい。
matplotlib.pyplotをpltの名でインポートしなさい。xの点数は適当に選択すること。次の通りに、配列randomを生成しなさい。(0から99までの整数を1000個抽出した乱数列)
np.random.default_rngに与えたseed変数12345によって、毎回同じ乱数列が生成されます。
実用の際にはseedを与えないことで、実行ごとに異なる乱数列が得られます。
import numpy as np
rng = np.random.default_rng(seed=12345)
random = rng.integers(low=0, high=100, size=1000)
print(random[:5]) # 第5項まで: 同じものが得られているか確かめましょう
randomの合計を求めなさい。 (48717)randomの平均を求めなさい。 (48.717)randomの分散を求めなさい。 (802.902911...)randomの標準偏差を求めなさい。(28.3355414...)randomの最大値を求めなさい。 (99)randomの最小値を求めなさい。 (0)randomの中央値を求めなさい。 (48)randomのうち偶数値のマスクを生成しなさい。randomのうち偶数値がいくつあるか求めなさい。(503)randomの偶数値の平均を求めなさい。 (49.1848906...)randomの偶数値の分散を求めなさい。 (834.6676047...)randomのうち20以上80未満の値のマスクを生成しなさい。randomのうち20以上80未満の値がいくつあるか求めなさい。(625)randomのうち20以上80未満の値の平均を求めなさい。 (49.5424)randomのうち20以上80未満の値の分散を求めなさい。 (295.20180224)前回の追加演習 (https://yasushifujiwara.github.io/dataanalysistutorial/Drill2_matplotlib.html) から1時間ごとの気温・水温・風速データを入手し、1時間ごとの熱フラックスの変動を解析しなさい。
特に2019年1月1日~2月28日の期間について、1時間ごとのデータから求めた平均顕熱フラックスと1日ごとのデータから求めた平均顕熱フラックスを比較しなさい。1日ごとのデータは第2回の解説で用いたもので、1年のうち0~58日目を抜き出せば得られます。 1時間ごとから求めた顕熱フラックスは上向き約58W/m^2、1日ごとから求めたものは約52W/m^2になると思います。この差はなぜ生まれるのか・どちらがより正確な値と考えられるか、考察しましょう。