関数の機能:同じデータのビューを返却
例1 : 16ビット整数型の配列のビューを8ビット整数形の配列として作成
>>> a = np.array([1,2], dtype=np.int16)
>>> a_view = a.view(dtype=np.int8)
>>> a_view
array([1, 0, 2, 0], dtype=int8)
>>> a_view[1] = 1
>>> a_view[3] = 2
>>> a_view
array([1, 1, 2, 2], dtype=int8)
>>> a
array([257, 514], dtype=int16)
この例では、16ビット整数型の配列とメモリを共有する8ビット整数型の配列を作っています。配列aは2要素ですが、配列a_viewは1要素のメモリサイズが半分になるので、要素数は2倍の4要素となります。 配列a_viewの要素を書き換えると配列aの要素も変化します。 配列aの1つ目の要素はa_viewの1つ目と2つ目の要素と対応しており、a[0]=a_view[0]+a_view[1]*28の関係となっています。
例2 : 文字列型の配列の短い文字数のビューを作成
>>> a = np.array(['abcd', 'efghij'])
>>> a
array(['abcd', 'efghij'], dtype='<U6')
>>> a_view = a.view(dtype='<U1')
>>> a_view
array(['a', 'b', 'c', 'd', '', '', 'e', 'f', 'g', 'h', 'i', 'j'],
dtype='<U1')
>>> a_view2 = a.view(dtype='<U2')
>>> a_view2
array(['ab', 'cd', '', 'ef', 'gh', 'ij'], dtype='<U2')
この例では、6文字の文字列型の配列とメモリを共有する、1文字と2文字の文字列型配列をそれぞれ作成しています。 なお下記の様に、元の配列の文字列数を割り切れない文字数を指定してビューを作成しようとするとエラーが発生します。
>>> b = np.array(['abcd', 'efghi'])
>>> b
array(['abcd', 'efghi'], dtype='<U5')
>>> b_view = b.view(dtype='<U2')
Traceback (most recent call last):
File "<pyshell#92>", line 1, in <module>
b_view = b.view(dtype='<U2')
ValueError: When changing to a smaller dtype, its size must be a divisor of the size of original dtype
関連項目 関数ndarray.copyの使い方の例 関数ndarray.transposeの使い方の例 属性ndarray.Tの使い方の例 属性ndarray.baseの使い方の例