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


Python numpy diagonal用法及代碼示例


本文簡要介紹 python 語言中 numpy.diagonal 的用法。

用法:

numpy.diagonal(a, offset=0, axis1=0, axis2=1)

返回指定的對角線。

如果a是二維的,返回對角線a具有給定的偏移量,即表單元素的集合a[i, i+offset].如果a具有兩個以上的維度,則由指定的軸軸1軸2用於確定返回其對角線的二維sub-array。結果數組的形狀可以通過刪除來確定軸1軸2並在右側附加一個等於結果對角線大小的索引。

在 1.7 之前的 NumPy 版本中,此函數始終返回一個新的獨立數組,其中包含對角線中值的副本。

在NumPy 1.7 和 1.8 中,它繼續返回對角線的副本,但根據這一事實已被棄用。寫入結果數組繼續像以前一樣工作,但會發出FutureWarning。

從 NumPy 1.9 開始,它返回原始數組的隻讀視圖。嘗試寫入結果數組將產生錯誤。

在未來的某個版本中,它將返回一個讀/寫視圖,並且寫入返回的數組將改變您的原始數組。返回的數組將與輸入數組具有相同的類型。

如果您不寫入此函數返回的數組,那麽您可以忽略以上所有內容。

如果您依賴於當前行為,那麽我們建議顯式複製返回的數組,即使用 np.diagonal(a).copy() 而不僅僅是 np.diagonal(a) 。這將適用於 NumPy 的過去和未來版本。

參數

a array_like

從中獲取對角線的數組。

offset 整數,可選

對角線與主對角線的偏移量。可以是正麵的或負麵的。默認為主對角線 (0)。

axis1 整數,可選

軸用作二維子陣列的第一個軸,應從中獲取對角線。默認為第一個軸 (0)。

axis2 整數,可選

用作應從中獲取對角線的二維子陣列的第二個軸的軸。默認為第二軸 (1)。

返回

array_of_diagonals ndarray

如果a是 2-D,則包含對角線且類型相同的 1-D 數組a被退回,除非a是一個numpy.matrix,在這種情況下是一維數組而不是(二維)numpy.matrix返回以保持向後兼容性。

如果a.ndim > 2,則由下式指定的尺寸軸1軸2被刪除,並在對應於對角線的末端插入一個新軸。

拋出

ValueError

如果a的維度小於2。

例子

>>> a = np.arange(4).reshape(2,2)
>>> a
array([[0, 1],
       [2, 3]])
>>> a.diagonal()
array([0, 3])
>>> a.diagonal(1)
array([1])

一個 3-D 示例:

>>> a = np.arange(8).reshape(2,2,2); a
array([[[0, 1],
        [2, 3]],
       [[4, 5],
        [6, 7]]])
>>> a.diagonal(0,  # Main diagonals of two arrays created by skipping
...            0,  # across the outer(left)-most axis last and
...            1)  # the "middle" (row) axis first.
array([[0, 6],
       [1, 7]])

我們剛剛獲得主對角線的子數組;請注意,每個都對應於固定最右側(列)軸,並且對角線在行中為“packed”。

>>> a[:,:,0]  # main diagonal is [0 6]
array([[0, 2],
       [4, 6]])
>>> a[:,:,1]  # main diagonal is [1 7]
array([[1, 3],
       [5, 7]])

可以通過使用 numpy.flipud numpy.fliplr 反轉元素的順序來獲得反對角線。

>>> a = np.arange(9).reshape(3, 3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> np.fliplr(a).diagonal()  # Horizontal flip
array([2, 4, 6])
>>> np.flipud(a).diagonal()  # Vertical flip
array([6, 4, 2])

請注意,檢索對角線的順序因翻轉函數而異。

相關用法


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