簡體   English   中英

刪除 numpy 數組的一些行

[英]Delete some rows of a numpy array

我有一個 numpy 數組,如下所示


cf = 
[[ 0.06605101 -0.37910558]
 [ 0.01950959 -0.13871163]
 [-0.07609168  0.35762712]
 [-0.10962792  0.53259178]
 [-0.20441798  1.02187988]
 [-0.27493986  1.3927189 ]
 [-0.32651418  1.66157985]
 [ 0.1344195  -0.73359827]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [ 0.          0.        ]
 [-0.01140529  0.02146107]
 [-0.14210564  0.70305015]
 [ 0.19425714 -1.04428677]
 [ 0.21070736 -1.13055805]
 [ 0.24264512 -1.29770194]
 [ 0.2739207  -1.45405194]
 [ 0.34871618 -1.84201387]
 [ 0.41549682 -2.18784216]
 [ 0.48779434 -2.56516974]
 [ 0.61753187 -3.22472257]
 [ 0.62543066 -3.29968867]
 [ 0.67363223 -3.51593344]
 [ 0.67156065 -3.50685949]
 [ 0.67066598 -3.5027474 ]
 [ 0.61698089 -3.20216463]
 [ 0.33951472 -1.80812563]
 [ 0.16105593 -0.88319653]]

但我想刪除值為[ 0. 0. ]的行。

為此,我的代碼是

for idx in range(cf.shape[0]):
    if cf[idx,0] == 0 and cf[idx,1] == 0 :
        np.delete(cf,idx,0)

cf沒有任何改變。 問題是什么..? [ 0. 0. ]值不完全為零嗎?

利用 numpy 的矢量化方法。 假設您的數組a

trimmed = cf[(cf != 0).any(axis=1)]

這將返回所有值總和不為零的行:

cf[np.abs(cf).sum(axis=1) != 0]

您可以使用 boolean 過濾,選擇絕對值總和不為零的行:

>>> cf[np.abs(cf).sum(1) != 0]
array([[ 0.06605101, -0.37910558],
       [ 0.01950959, -0.13871163],
       [-0.07609168,  0.35762712],
       [-0.10962792,  0.53259178],
       [-0.20441798,  1.02187988],
       [-0.27493986,  1.3927189 ],
       [-0.32651418,  1.66157985],
       [ 0.1344195 , -0.73359827],
       [-0.01140529,  0.02146107],
       [-0.14210564,  0.70305015],
       [ 0.19425714, -1.04428677],
       [ 0.21070736, -1.13055805],
       [ 0.24264512, -1.29770194],
       [ 0.2739207 , -1.45405194],
       [ 0.34871618, -1.84201387],
       [ 0.41549682, -2.18784216],
       [ 0.48779434, -2.56516974],
       [ 0.61753187, -3.22472257],
       [ 0.62543066, -3.29968867],
       [ 0.67363223, -3.51593344],
       [ 0.67156065, -3.50685949],
       [ 0.67066598, -3.5027474 ],
       [ 0.61698089, -3.20216463],
       [ 0.33951472, -1.80812563],
       [ 0.16105593, -0.88319653]])

​

暫無
暫無

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

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