Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
多次元配列機能比較
田中昌宏 2016-02-20
Numpy多次元配列の機能
1. Slice View
• 配列のスライスは、元の配列のビューになる。
2. Broadcasting
• 要素数が1の次元のとき、要素を繰り返して適用。
3. Index/Mask array
• 配列のスライ...
1. Slice View
• a[2:4] のようなスライスは、元の配列のビューになる。
>>> a = numpy.arange(5)
array([0, 1, 2, 3, 4])
>>> b = a[2:4]
array([2, 3])
...
2. Broadcasting
• 配列の演算で、一方の配列のある次元の要素数が1のとき、要
素が繰り返して適用される。
• numpy.arange(4).reshape(4,1) * numpy.arange(5).reshape(1,5)...
3. Index/Mask array
>>> a = numpy.array([1,-2,3,-4,-5])
array([ 1, -2, 3, -4, -5])
>>> bool = a<0
array([False, True, Fals...
機能比較
Numpy NMatrix 旧NArray 新NArray
Slice View ○ ○ × ○
Broadcasting ○ ×(dotのみ) ○ ○
Index/Mask ○ × ○ ○
1.0 * a ○ × ○ ○
雑感
• NMatrixは、多次元配列としては機能不足。しかし、
疎行列機能がある点は優位。
• NArray旧版は、ありがたいことにいろいろなところ
で使われているが、捨てて新しい方に移りたい…
• NArray新版は、
• 基本的な部分はほ...
Próxima SlideShare
Cargando en…5
×

多次元配列機能比較

numpy, nmatrix, narrayの多次元配列機能比較です。

  • Sé el primero en comentar

多次元配列機能比較

  1. 1. 多次元配列機能比較 田中昌宏 2016-02-20
  2. 2. Numpy多次元配列の機能 1. Slice View • 配列のスライスは、元の配列のビューになる。 2. Broadcasting • 要素数が1の次元のとき、要素を繰り返して適用。 3. Index/Mask array • 配列のスライスに与えるインデックスが、 • bool配列のとき、Trueの位置の要素を参照 • int配列のとき、インデックスとして参照
  3. 3. 1. Slice View • a[2:4] のようなスライスは、元の配列のビューになる。 >>> a = numpy.arange(5) array([0, 1, 2, 3, 4]) >>> b = a[2:4] array([2, 3]) >>> b[:] = 9 array([9, 9]) >>> a array([0, 1, 9, 9, 4]) • もともと要素参照が a[k][j][i] という記法だったためと思われる。 • Viewによってコピー不要になる例: • a[3:7] += 5 • diff = a[1:-2] - a[0:-1] • NArray旧版では不採用
  4. 4. 2. Broadcasting • 配列の演算で、一方の配列のある次元の要素数が1のとき、要 素が繰り返して適用される。 • numpy.arange(4).reshape(4,1) * numpy.arange(5).reshape(1,5) • Broadcasting がなければ、演算の前に n*m の配列を作らなけれ ばならない。 • 配列とスカラーの演算も、Broadcastingの一種とみなせる。 0 1 2 3 0 0 0 0 0 0 1 2 3 4 0 2 4 6 8 0 3 6 9 12 * 0 1 2 3 4 =
  5. 5. 3. Index/Mask array >>> a = numpy.array([1,-2,3,-4,-5]) array([ 1, -2, 3, -4, -5]) >>> bool = a<0 array([False, True, False, True, True], dtype=bool) >>> a[bool] array([-2, -4, -5]) >>> index = numpy.where(bool) (array([1, 3, 4]),) >>> a[index] array([-2, -4, -5]) >>> a[a<0] = 0 >>> a array([1, 0, 3, 0, 0]) (初期のNumpyにはなかった機能)
  6. 6. 機能比較 Numpy NMatrix 旧NArray 新NArray Slice View ○ ○ × ○ Broadcasting ○ ×(dotのみ) ○ ○ Index/Mask ○ × ○ ○ 1.0 * a ○ × ○ ○
  7. 7. 雑感 • NMatrixは、多次元配列としては機能不足。しかし、 疎行列機能がある点は優位。 • NArray旧版は、ありがたいことにいろいろなところ で使われているが、捨てて新しい方に移りたい… • NArray新版は、 • 基本的な部分はほぼできている。 • モジュール名をつけたいが、名前が決まらない… • 細かい実装で気になる部分は多数。 • 整理・リファクタリングも必要。

×