パイソンでベクトル、行列、アレイの扱い
- パイソンでnumpy,scipyを使って数値計算やシミュレーション、解析をするには、まず、numpyを使って、ベクトル・行列・アレイを自由に使う必要がある
- スカラー。整数と浮動小数点数とが区別されていることに注意
- ※ 線形代数はnumpyのそれではなく、scipyのそれを使うべきなのだそうだ
- numpyを使うと言ったらできるべきことは:〜こちらより〜
- "何を知っていれば一通り覚えたことになる?
- 配列の作り方を知っている。
- 配列のシェイプを array.shape を使って知る、次にスライスで配列の異なるビューを得る: array[::2] 等。配列のシェイプを reshape を使って調整したり、 ravel を使って平坦化する。
- "何を知っていれば一通り覚えたことになる?
マスクを使って配列の一部を得たり、変更する: a[a < 0] = 0
-
-
- 平均や最大値を求める (array.max(), array.mean()) といった様々な配列の操作について知っている。
- 全てを知っている必要はありませんが、反射的にドキュメントを検索できる (online docs, help(), lookfor())!!
- より高度な利用法を身につけるには: 整数配列によるインデックスを習得する、ブロードキャストも同様。様々な配列操作を扱う Numpy の関数についてよく知る"
-
a1 = 1 a2 = 1.0
a1 Out[122]: 1 a2 Out[123]: 1.0
- ベクトル
b1 = [1,2,3] b2 = [1.,2,3]
b1 Out[125]: [1, 2, 3] b2 Out[126]: [1.0, 2, 3]
- 良く使うベクトルを簡単に作る
c1 = range(5) c2 = repeat(0,6)
c1 Out[131]: [0, 1, 2, 3, 4] c2 Out[133]: array([0, 0, 0, 0, 0, 0])
- ベクトルを扱う
d1 = [0.3,5.2,3.1] d1.sort() d1
d1.sort() d1 Out[149]: [0.3, 3.1, 5.2]
- ベクトルの要素の扱い
dd1 = range(20)
dd1[0:3] Out[218]: [0, 1, 2] dd1[2:5] Out[219]: [2, 3, 4] dd1[2:2] Out[220]: [] dd1[2:3] Out[221]: [2] dd1[7:4] Out[222]: [] dd1[7:(-1)] Out[223]: [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] dd1 Out[224]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] dd1[(-1)] Out[225]: 19 dd1[(-2)] Out[226]: 18 dd1[::-1] # 逆順 Out[227]: [19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
- ベクトルをアレイ形式にする。次元1で、その1次元の長さがnのアレイができる
f1 = array([1,2,3,4]) f2 = arange(4)
f1 Out[156]: array([1, 2, 3, 4]) f2 Out[160]: array([0, 1, 2, 3]) f1.shape Out[164]: (4,)
- 行列という二次元アレイを作る。2x3行列を作る
g1 = array([[1,2,3],[4,5,6]])
g1 Out[162]: array([[1, 2, 3], [4, 5, 6]]) g1.shape Out[163]: (2, 3)
- 一般次元アレイ
k = [2,3,4] h1 = arange(prod(k)).reshape(k)
h1 Out[194]: array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]])
- 形を変える
h2 = h1.reshape([6,2,2]) h2.shape h2
h2.shape Out[201]: (6, 2, 2) h2 Out[202]: array([[[ 0, 1], [ 2, 3]], [[ 4, 5], [ 6, 7]], [[ 8, 9], [10, 11]], [[12, 13], [14, 15]], [[16, 17], [18, 19]], [[20, 21], [22, 23]]])