當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python numpy ma.MaskedArray.view用法及代碼示例


用法:

MaskedArray.view(dtype=None, type=None)

具有相同數據的數組的新視圖。

參數:
dtype data-type 或 ndarray sub-class, 可選參數

返回視圖的數據類型描述符,例如float32或int16。默認值為None(無),導致視圖具有與a相同的數據類型。此參數也可以指定為ndarray sub-class,然後它指定返回對象的類型(這等效於設置type參數)。

type Python type, 可選參數

返回視圖的類型,例如ndarray或matrix。同樣,默認值None將導致類型保留。

注意:

a.view()有兩種不同的用法:

a.view(some_dtype)或者a.view(dtype=some_dtype)使用不同的數據類型構造陣列內存的視圖。這可能導致對內存字節的重新解釋。

a.view(ndarray_subclass)或者a.view(type=ndarray_subclass)隻是返回一個ndarray_subclass實例,該實例看起來在相同的數組(相同的形狀,dtype等)。這不會導致對內存的重新解釋。

對於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)])

使用不同的type和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')])

源碼:

numpy.ma.MaskedArray.view的API實現見:[源代碼]


注:本文由純淨天空篩選整理自 numpy.ma.MaskedArray.view。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。