既存のオブジェクトのビューを生成します.動作は 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]]