給定以下矩陣:
matrix = np.array([[0,np.nan,1],[np.nan,np.nan,np.nan],[1,2,3]])
我想獲得一組最小行值。在一行包含所有 nan 值的情況下,所有 nan 值的該行的索引應該是 0。 reslting 陣列應該是。
array([0,0,0])
如果我嘗試使用,np.argmin(matrix,axis=1)那么最小索引就是 np.nan 出現的位置,例如:
array([1, 0, 0])
這是不希望的,如果我使用np.nanargmin(matrix,axis=1)我得到raise ValueError("All-NaN slice encountered")
uj5u.com熱心網友回復:
使用 用無窮大填充 NaN numpy.nan_to_num,然后??得到argmin:
np.argmin(np.nan_to_num(matrix, nan=float('inf')), axis=1)
輸出:array([0, 0, 0])
uj5u.com熱心網友回復:
您可以將陣列轉換為屏蔽陣列,其中所有 np.nan 都被屏蔽,然后獲取該陣列的 argmin:
np.ma.masked_invalid(matrix).argmin(axis=1)
輸出:array([0, 0, 0], dtype=int64)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/436252.html
