50
基本上,我正在做一些數據分析。我將數據集作爲numpy.ndarray讀取,並且缺少一些值(通過不在那裏,可以是NaN
,或者是寫成「NA
」的字符串)。如何刪除numpy.ndarray中包含非數字值的所有行
我想清除包含這樣的任何條目的所有行。我該如何做到這一點與numpy ndarray?
基本上,我正在做一些數據分析。我將數據集作爲numpy.ndarray讀取,並且缺少一些值(通過不在那裏,可以是NaN
,或者是寫成「NA
」的字符串)。如何刪除numpy.ndarray中包含非數字值的所有行
我想清除包含這樣的任何條目的所有行。我該如何做到這一點與numpy ndarray?
>>> a = np.array([[1,2,3], [4,5,np.nan], [7,8,9]])
array([[ 1., 2., 3.],
[ 4., 5., nan],
[ 7., 8., 9.]])
>>> a[~np.isnan(a).any(axis=1)]
array([[ 1., 2., 3.],
[ 7., 8., 9.]])
並將其重新分配給a
。
說明:np.isnan(a)
返回一個類似的陣列與True
其中NaN
,False
其他地方。 .any(axis=1)
降低了m*n
陣列n
與對整個行的邏輯操作or
,~
反轉True/False
和a[ ]
從原始陣列,其具有括號內True
只選擇行。
真棒謝謝你。是否有可能解釋這是在做什麼?仍然有點新numpy :) – zebra 2012-07-12 13:52:49
@ zebra - 解釋。 – eumiro 2012-07-12 13:56:04
'np.isfinite'在這種情況下也很有用,以及當你想擺脫'±Inf'值時。它不需要'〜',因爲它只對有限實數返回真。 – naught101 2016-09-07 23:16:31