パイソンでベクトル、行列、アレイの扱い

  • パイソンで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]]])