numpyのメソッド: view()

動作

既存のオブジェクトのビューを生成します.動作は copy() 似ています.copy() は別メモリーにオブジェクトを生成しますが,view() はオブジェクトを生成しません.そのくせ,view() が作成するオブジェクトの id は元のオブジェクトと異なります.なんか不思議です.

引数

引数は「view(dtype=None, type=None)」です.

引数 デフォルト 動作
dtype None もとのオブジェクトの要素を出力するときの,データタイプです.よほどのことが無い限り使うことは無いでしょう.
type None view()が戻すタイプを指定します.ndarray か matrix です.

戻り値

戻り値は,Numpy の ndarray です.

プログラム例

import numpy as np

a = np.array([1 ,2, 3, 4])
x = a.view()

b = np.array([-1 ,2, 3, 4], dtype=np.int16)
y = b.view(dtype=np.uint8)
z = b.view(type=np.matrix)

a[3]=999
print('a = ', a)
print('x = ', x)
print('Are id of a and x same? ',a is x)
print('id(a) = {0:d}\tid(x) = {1:d}'.format(id(a), id(x)))
print(type(a), type(x))
print('b = ', b)
print('y = ', y)
print('Are id of b and y same? ',b is y)
print('z = ', z)

実行結果

a =  [  1   2   3 999]
x =  [  1   2   3 999]
Are id of a and x same?  False
id(a) = 139693692607104 id(x) = 139693692607584
<class 'numpy.ndarray'> <class 'numpy.ndarray'>
b =  [-1  2  3  4]
y =  [255 255   2   0   3   0   4   0]
Are id of b and y same?  False
z =  [[-1  2  3  4]]