用法:
cast(format[, shape])
将内存视图转换为新格式或形状。
shape
默认为[byte_length//new_itemsize]
,这意味着结果视图将是一维的。返回值是一个新的内存视图,但缓冲区本身并没有被复制。支持的转换为 1D -> C-contiguous 和 C-contiguous -> 1D。目标格式仅限于
struct
语法中的单元素本机格式。其中一种格式必须是字节格式(‘B’,‘b’ or ‘c’)。结果的字节长度必须与原始长度相同。将 1D/long 转换为 1D/无符号字节:
>>> import array >>> a = array.array('l', [1,2,3]) >>> x = memoryview(a) >>> x.format 'l' >>> x.itemsize 8 >>> len(x) 3 >>> x.nbytes 24 >>> y = x.cast('B') >>> y.format 'B' >>> y.itemsize 1 >>> len(y) 24 >>> y.nbytes 24
将一维/无符号字节转换为一维/字符:
>>> b = bytearray(b'zyz') >>> x = memoryview(b) >>> x[0] = b'a' Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: memoryview: invalid value for format "B" >>> y = x.cast('c') >>> y[0] = b'a' >>> b bytearray(b'ayz')
将 1D/bytes 转换为 3D/ints 转换为 1D/signed char:
>>> import struct >>> buf = struct.pack("i"*12, *list(range(12))) >>> x = memoryview(buf) >>> y = x.cast('i', shape=[2,2,3]) >>> y.tolist() [[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]] >>> y.format 'i' >>> y.itemsize 4 >>> len(y) 2 >>> y.nbytes 48 >>> z = y.cast('b') >>> z.format 'b' >>> z.itemsize 1 >>> len(z) 48 >>> z.nbytes 48
将 1D/unsigned long 转换为 2D/unsigned long:
>>> buf = struct.pack("L"*6, *list(range(6))) >>> x = memoryview(buf) >>> y = x.cast('L', shape=[2,3]) >>> len(y) 2 >>> y.nbytes 48 >>> y.tolist() [[0, 1, 2], [3, 4, 5]]
3.3 版中的新函数。
在 3.5 版中更改:转换为字节视图时,源格式不再受到限制。
相关用法
- Python memoryview.itemsize用法及代码示例
- Python memoryview.nbytes用法及代码示例
- Python memoryview.obj用法及代码示例
- Python memoryview.hex用法及代码示例
- Python memoryview.toreadonly用法及代码示例
- Python memoryview.release用法及代码示例
- Python memoryview.tolist用法及代码示例
- Python memoryview.__eq__用法及代码示例
- Python memoryview.tobytes用法及代码示例
- Python memoryview()用法及代码示例
- Python memoryview用法及代码示例
- Python statistics median_high()用法及代码示例
- Python statistics median_low()用法及代码示例
- Python statistics median()用法及代码示例
- Python statistics median_grouped()用法及代码示例
- Python numpy ma.MaskedArray.view用法及代码示例
- Python matplotlib.patches.Rectangle用法及代码示例
- Python matplotlib.pyplot.step()用法及代码示例
- Python math.cos()用法及代码示例
- Python math.cosh()用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 memoryview.cast。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。