簡體   English   中英

如何用 numpy 刪除矩陣上三角部分的零

[英]How to delete zeroes in the upper triangular part of a matrix with numpy

我有一個形狀為 (68,68) 的矩陣“A”,它的上三角只有零。 下面的三角形有我感興趣的值。例如:

>>> A
array([[ 0,  0,  0],
       [ 1,  0,  0],
       [ 2,  3,  0],
       [ 4,  5,  6]])

我怎樣才能得到一個上三角沒有值的矩陣“B”,如下所示:

>>> B
array([[  ,   ,  ],
       [ 1,   ,  ],
       [ 2,  3,  ],
       [ 4,  5, 6]])

numpy 中並沒有真正表示“無價值”,至少不是以您解釋的方式。

您可以獲得的最接近的可能是np.nan ,這是“非數字”的常用表示形式。

np.nan被視為一個數字,因為它不會破壞任何試圖以數學方式處理它的代碼,但它也不被視為零,因為用它完成的任何操作都會導致np.nan 例如:

import numpy as np

>>> 0 + 10  
# output: 10

>>> np.nan + 10
# output: nan 

在您的情況下,用np.nan替換A的上三角部分實際上意味着“在使用A完成的任何操作中忽略這部分”。

至於如何np.nan替換值,你可以這樣做:

import numpy as np

A = np.array([
    [ 0,  0,  0],
    [ 1,  0,  0],
    [ 2,  3,  0],
    [ 4,  5,  6],
])

A = A.astype(float)
A[A == 0] = np.nan

print(A)

Output:

[[nan nan nan]
 [ 1. nan nan]
 [ 2.  3. nan]
 [ 4.  5.  6.]]

請注意,我們必須將A從 integer 矩陣轉換為浮點矩陣,因為np.nan在技術上被認為是浮點數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM