用法:
class memoryview(object)
創建一個引用
object
的memoryview
。object
必須支持緩衝協議。支持緩衝區協議的內置對象包括bytes
和bytearray
。memoryview
具有element
的概念,它是由原始object
處理的原子內存單元。對於許多簡單類型,例如bytes
和bytearray
,一個元素是單個字節,但其他類型,例如array.array
可能有更大的元素。len(view)
等於tolist
的長度。如果view.ndim = 0
,則長度為 1。如果view.ndim = 1
,則長度等於視圖中的元素數。對於更高維度,長度等於視圖的嵌套列表表示的長度。itemsize
屬性將為您提供單個元素中的字節數。memoryview
支持切片和索引以公開其數據。一維切片會產生一個子視圖:>>> v = memoryview(b'abcefg') >>> v[1] 98 >>> v[-1] 103 >>> v[1:4] <memory at 0x7f3ddc9f4350> >>> bytes(v[1:4]) b'bce'
如果
format
是來自struct
模塊的本機格式說明符之一,則還支持使用整數或整數元組進行索引,並返回具有正確類型的單個element
。一維內存視圖可以用整數或one-integer 元組索引。多維內存視圖可以用正好ndim
整數的元組索引,其中ndim
是維數。零維內存視圖可以用空元組索引。這是一個非字節格式的示例:
>>> import array >>> a = array.array('l', [-11111111, 22222222, -33333333, 44444444]) >>> m = memoryview(a) >>> m[0] -11111111 >>> m[-1] 44444444 >>> m[::2].tolist() [-11111111, -33333333]
如果底層對象是可寫的,則 memoryview 支持一維切片分配。不允許調整大小:
>>> data = bytearray(b'abcefg') >>> v = memoryview(data) >>> v.readonly False >>> v[0] = ord(b'z') >>> data bytearray(b'zbcefg') >>> v[1:4] = b'123' >>> data bytearray(b'z123fg') >>> v[2:3] = b'spam' Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: memoryview assignment: lvalue and rvalue have different structures >>> v[2:6] = b'spam' >>> data bytearray(b'z1spam')
具有“B”、‘b’ or ‘c’ 格式的可散列(隻讀)類型的一維內存視圖也是可散列的。哈希定義為
hash(m) == hash(m.tobytes())
:>>> v = memoryview(b'abcefg') >>> hash(v) == hash(b'abcefg') True >>> hash(v[2:4]) == hash(b'ce') True >>> hash(v[::-2]) == hash(b'abcefg'[::-2]) True
在 3.3 版中更改:現在可以對一維內存視圖進行切片。格式為“B”、‘b’ or ‘c’ 的一維內存視圖現在是可散列的。
在 3.4 版中更改:memoryview 現在自動注冊
collections.abc.Sequence
在 3.5 版中更改:memoryviews 現在可以用整數元組索引。
memoryview
有幾種方法:還有幾個可用的隻讀屬性:
相關用法
- Python memoryview.itemsize用法及代碼示例
- Python memoryview.nbytes用法及代碼示例
- Python memoryview.cast用法及代碼示例
- Python memoryview.obj用法及代碼示例
- Python memoryview.hex用法及代碼示例
- Python memoryview()用法及代碼示例
- Python memoryview.toreadonly用法及代碼示例
- Python memoryview.release用法及代碼示例
- Python memoryview.tolist用法及代碼示例
- Python memoryview.__eq__用法及代碼示例
- Python memoryview.tobytes用法及代碼示例
- Python statistics median_high()用法及代碼示例
- Python statistics median_low()用法及代碼示例
- Python statistics median()用法及代碼示例
- Python statistics median_grouped()用法及代碼示例
- Python mxnet.symbol.op.broadcast_logical_xor用法及代碼示例
- Python mxnet.test_utils.get_zip_data用法及代碼示例
- Python mxnet.ndarray.op.uniform用法及代碼示例
- Python mxnet.symbol.op.log_softmax用法及代碼示例
- Python mxnet.symbol.space_to_depth用法及代碼示例
注:本文由純淨天空篩選整理自python.org大神的英文原創作品 memoryview。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。