はじめまして。最近プログラミング学習を始めました。
ある程度は基本的な文法を学び終えたと思うので、以前かなり話題になっていた松尾研究室が公開している教材をやってみることにしました。(じつは過去にやろうとしてJupyterの存在を知らず断念したのはないしょ)
Chap1
さて、本教材のChapter1はpython文法の復習みたいなもので、まぁ言われたとおりに復習しました。
こういうのもあるんだなぁ、と思ったのは次の内包表記やzip関数
sample_data_list1 = [i * 2 for i in sample_data_list1 if i%2==0]
print(sample_data_list1)
for one, two in zip([1, 2, 3], [11, 12, 13]):
print("", one, "&", two)
みたいな
#chap2
それで、Chap2に入るとNumpy、Scipy、Pandas、Matplotlibの基礎になりグッとデータサイエンスっぽくなってきた。
このへんは知らないことがたくさんあった。
まず前準備なんだけど
import numpy as np
import numpy.random as random
import scipy as sp
import pandas as pd
from pandas import Series, DataFrame
#可視化モジュール
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
%matplotlib inline
#小数第3まで表示
%precision 3
jupyterのライン?上にmatplotlibで表示できるのとか表示する小数の位を指定するものとか、この一連のimportまわりは便利そうです。
# 次元数
print("次元数:",sample_numpy_data.ndim)
# 要素数
print("要素数:",sample_numpy_data.size)
#sort
sample_numpy_data.sort()/div>
そしてあたりまえのように次元数も教えてくれるしソートもしてくれるnumpyちゃん。
#積み上げ計算
#積み上げ
print("Cum:",sample_numpy_data.cumsum())
# 積み上げ割合
print("Ratio:",sample_numpy_data.cumsum()/sample_numpy_data.sum())
cumsum()で積み上げ加算、それをsum()で割れば累積分布も出せる。
#numpyの正規分布の乱数発生
# 乱数の発生のためのモジュール読み込み
import numpy.random as random
__=random.randn(10)
N = 10**6
normal_sample_data = [random.random() for _ in range(N)]
基本はこれで、シードも設定できる。
あと
%%timeit
で実行時間表示してくれるんですね。知らなかった。
#dot積
# 行列の積
print(np.dot(sample_multi_array_data1,sample_multi_array_data2))
print(sample_multi_array_data1*sample_multi_array_data2)
#出力
[[ 42 45 48]
[150 162 174]
[258 279 300]]
[[ 0 10 22]
[ 36 52 70]
[ 90 112 136]]
特になし
#練習問題
一応、私も解いたので載せますがきたねーですよ。
問題1
``` %%timeit int_number=np.arange(1,51) print(np.sum(int_number)) ```問題2
``` import numpy.random as random random.seed(0) 正規分布(平均0、分散1)の乱数を10個発生 norm_random_sample_data2 = random.randn(10) print("乱数10個の配列:", norm_random_sample_data2) print(np.min(norm_random_sample_data2)) print(np.max(norm_random_sample_data2)) print(np.sum(norm_random_sample_data2)) ```問題3
``` 3の配列 three_data=np.ones((3,3),dtype='f')*3 print(three_data) three_square=np.dot(three_data,three_data) print(three_square) ```今回はここまで