本文简要介绍 python 语言中 numpy.ndarray.view
的用法。
用法:
ndarray.view([dtype][, type])
具有相同数据的数组的新视图。
注意
为
dtype
传递 None 与省略参数不同,因为前者调用dtype(None)
这是dtype('float_')
的别名。- dtype: 数据类型或 ndarray sub-class,可选
返回视图的数据类型说明符,例如 float32 或 int16。省略它会导致视图具有与以下内容相同的数据类型a。该参数也可以指定为 ndarray sub-class,然后指定返回对象的类型(这相当于设置
type
范围)。- type: Python 类型,可选
返回视图的类型,例如 ndarray 或矩阵。同样,省略参数会导致类型保留。
参数:
注意:
a.view()
有两种不同的使用方式:a.view(some_dtype)
或a.view(dtype=some_dtype)
使用不同的数据类型构造数组内存的视图。这可能会导致重新解释内存字节。a.view(ndarray_subclass)
或者a.view(type=ndarray_subclass)
只返回一个实例ndarray_subclass查看相同的数组(相同的形状、数据类型等),这不会导致内存的重新解释。对于
a.view(some_dtype)
,如果some_dtype
每个条目的字节数与之前的 dtype 不同(例如,将常规数组转换为结构化数组),则无法仅从表面的外观预测视图的行为a
(由print(a)
显示)。它还取决于a
在内存中的存储方式。因此,如果a
是C-ordered 与fortran-ordered,而不是定义为切片或转置等,则视图可能会给出不同的结果。例子:
>>> x = np.array([(1, 2)], dtype=[('a', np.int8), ('b', np.int8)])
使用不同的类型和 dtype 查看数组数据:
>>> y = x.view(dtype=np.int16, type=np.matrix) >>> y matrix([[513]], dtype=int16) >>> print(type(y)) <class 'numpy.matrix'>
在结构化数组上创建视图,以便将其用于计算
>>> 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.])
对视图进行更改会更改底层数组
>>> xv[0,1] = 20 >>> x array([(1, 20), (3, 4)], dtype=[('a', 'i1'), ('b', 'i1')])
使用视图将数组转换为recarray:
>>> z = x.view(np.recarray) >>> z.a array([1, 3], dtype=int8)
视图共享数据:
>>> x[0] = (9, 10) >>> z[0] (9, 10)
通常应避免在由切片、转置、fortran-ordering 等定义的数组上更改 dtype 大小(每个条目的字节数)的视图:
>>> 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): ... ValueError: To change to a dtype of a different size, the array must be C-contiguous >>> z = y.copy() >>> z.view(dtype=[('width', np.int16), ('length', np.int16)]) array([[(1, 2)], [(4, 5)]], dtype=[('width', '<i2'), ('length', '<i2')])
相关用法
- Python numpy ndarray.astype用法及代码示例
- Python numpy ndarray.flat用法及代码示例
- Python numpy ndarray.setflags用法及代码示例
- Python numpy ndarray.setfield用法及代码示例
- Python numpy ndarray.sort用法及代码示例
- Python numpy ndarray.real用法及代码示例
- Python numpy ndarray.strides用法及代码示例
- Python numpy ndarray.itemset用法及代码示例
- Python numpy ndarray.__class_getitem__用法及代码示例
- Python numpy ndarray.partition用法及代码示例
- Python numpy ndarray.transpose用法及代码示例
- Python numpy ndarray.flatten用法及代码示例
- Python numpy ndarray.resize用法及代码示例
- Python numpy ndarray.dtype用法及代码示例
- Python numpy ndarray.imag用法及代码示例
- Python numpy ndarray.dot用法及代码示例
- Python numpy ndarray.size用法及代码示例
- Python numpy ndarray.fill用法及代码示例
- Python numpy ndarray.item用法及代码示例
- Python numpy ndarray.nbytes用法及代码示例
- Python numpy ndarray.tobytes用法及代码示例
- Python numpy ndarray.copy用法及代码示例
- Python numpy ndarray.ctypes用法及代码示例
- Python numpy ndarray.shape用法及代码示例
- Python numpy ndarray.base用法及代码示例
注:本文由纯净天空筛选整理自numpy.org大神的英文原创作品 numpy.ndarray.view。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。