[英]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.