情報科学 › 研究のための計算の実務 › NumPy で書く配列計算

転置・スライス・逆順・軸の追加は複製なしで表せる

命題 2.3(「NumPy で書く配列計算」§2) ・ ✓公理まで証明済み

配列 aa の shape を (n1,…,nd)(n_1,\ldots,n_d)、strides を (s1,…,sd)(s_1,\ldots,s_d)、offset を oo とする。次の各操作の結果 bb は、aa と同じデータ領域の上で、右に示す shape・strides・offset をもつ配列として表せる。すなわち、bb の各要素の番地は、対応する aa の要素の番地に等しい。

  1. 転置(軸の置換 π\pi。b[j1,…,jd]=a[i1,…,id]b[j_1,\ldots,j_d]=a[i_1,\ldots,i_d], iπ(k)=jki_{\pi(k)}=j_k): shape (nπ(1),…,nπ(d))(n_{\pi(1)},\ldots,n_{\pi(d)})、strides (sπ(1),…,sπ(d))(s_{\pi(1)},\ldots,s_{\pi(d)})、offset oo。
  2. スライス(第 kk 軸で始点 α\alpha、歩幅 t≠0t\ne0、個数 mm。0≤j<m0\le j\lt m で 0≤α+jt<nk0\le\alpha+jt\lt n_k とし、b[…,j,…]=a[…,α+jt,…]b[\ldots,j,\ldots]=a[\ldots,\alpha+jt,\ldots]): 第 kk 軸の長さを mm、stride を tskts_k に変え、offset を o+αsko+\alpha s_k にする。逆順は α=nk−1\alpha=n_k-1, t=−1t=-1, m=nkm=n_k の場合である。
  3. 整数による添字(第 kk 軸を α\alpha に固定。bb は d−1d-1 次元): 第 kk 軸を shape と strides から取り除き、offset を o+αsko+\alpha s_k にする。
  4. 軸の追加(長さ 11 の軸を挿入。None や np.newaxis): その位置に長さ 11、stride 00 を挿入する。offset は oo。
  5. 長さ 1 の軸の引き伸ばし(第 kk 軸が nk=1n_k=1 のとき、長さ mm にして b[…,j,…]=a[…,0,…]b[\ldots,j,\ldots]=a[\ldots,0,\ldots]): 第 kk 軸の長さを mm、stride を 00 にする。offset は oo。

本文で読む(証明と前後の説明)→

閉包の状態

✓ 公理まで証明済み

証明が使う定理を 前提 としてたどると、Rikai の中の証明だけで定義・公理(物理では基本仮定)までつながっています(前提の定理類 0 件、定義なども含めて 1 件)。

印の意味: ✓公理まで証明済み ・ △証明あり(閉包未完)・ ※主張のみ。テーマごとの集計は 閉包の状況。

前提をたどる 証明が使う定理・定義(直接 1 件)

▸ を開くと、その項目の証明が使う前提が出ます。深い先は各項目のページでたどれます。

これを使っている定理

証明で明示的に参照している定理は、まだありません。

関連するノック 3 問