numpy.ma.MaskedArray.view¶
- MaskedArray.view(dtype=None, type=None)[source]¶
- New view of array with the same data. - Parameters: - dtype : data-type or ndarray sub-class, optional - Data-type descriptor of the returned view, e.g., float32 or int16. The default, None, results in the view having the same data-type as a. This argument can also be specified as an ndarray sub-class, which then specifies the type of the returned object (this is equivalent to setting the type parameter). - type : Python type, optional - Type of the returned view, e.g., ndarray or matrix. Again, the default None results in type preservation. - Notes - a.view() is used two different ways: - a.view(some_dtype) or a.view(dtype=some_dtype) constructs a view of the array’s memory with a different data-type. This can cause a reinterpretation of the bytes of memory. - a.view(ndarray_subclass) or a.view(type=ndarray_subclass) just returns an instance of ndarray_subclass that looks at the same array (same shape, dtype, etc.) This does not cause a reinterpretation of the memory. - For a.view(some_dtype), if some_dtype has a different number of bytes per entry than the previous dtype (for example, converting a regular array to a structured array), then the behavior of the view cannot be predicted just from the superficial appearance of a (shown by print(a)). It also depends on exactly how a is stored in memory. Therefore if a is C-ordered versus fortran-ordered, versus defined as a slice or transpose, etc., the view may give different results. - Examples - >>> x = np.array([(1, 2)], dtype=[('a', np.int8), ('b', np.int8)]) - Viewing array data using a different type and dtype: - >>> y = x.view(dtype=np.int16, type=np.matrix) >>> y matrix([[513]], dtype=int16) >>> print type(y) <class 'numpy.matrixlib.defmatrix.matrix'> - Creating a view on a structured array so it can be used in calculations - >>> x = np.array([(1, 2),(3,4)], dtype=[('a', np.int8), ('b', np.int8)]) >>> xv = x.view(dtype=np.int8).reshape(-1,2) >>> xv array([[1, 2], [3, 4]], dtype=int8) >>> xv.mean(0) array([ 2., 3.]) - Making changes to the view changes the underlying array - >>> xv[0,1] = 20 >>> print x [(1, 20) (3, 4)] - Using a view to convert an array to a recarray: - >>> z = x.view(np.recarray) >>> z.a array([1], dtype=int8) - Views share data: - >>> x[0] = (9, 10) >>> z[0] (9, 10) - Views that change the dtype size (bytes per entry) should normally be avoided on arrays defined by slices, transposes, fortran-ordering, etc.: - >>> x = np.array([[1,2,3],[4,5,6]], dtype=np.int16) >>> y = x[:, 0:2] >>> y array([[1, 2], [4, 5]], dtype=int16) >>> y.view(dtype=[('width', np.int16), ('length', np.int16)]) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: new type not compatible with array. >>> z = y.copy() >>> z.view(dtype=[('width', np.int16), ('length', np.int16)]) array([[(1, 2)], [(4, 5)]], dtype=[('width', '<i2'), ('length', '<i2')]) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: new type not compatible with array.