array([ 3.497 , 3.0935 , 3.3625 , 3.56425, 3.497 , 4.10225,
2.75725, 3.766 , 2.959 , 3.9005 ])
的在上面的numpy的陣列,我要計算一個新的數組,其中底部和頂部5百分位值被指定爲100的值,而其它被分配一個值是1.是否有類似於可以在此使用的平衡功能?分配值,以底部和頂部5百分numpy的陣列
array([ 3.497 , 3.0935 , 3.3625 , 3.56425, 3.497 , 4.10225,
2.75725, 3.766 , 2.959 , 3.9005 ])
的在上面的numpy的陣列,我要計算一個新的數組,其中底部和頂部5百分位值被指定爲100的值,而其它被分配一個值是1.是否有類似於可以在此使用的平衡功能?分配值,以底部和頂部5百分numpy的陣列
如何計算5和95百分位與np.percentile
首先,與所述兩個閾值陣列中的與np.searchsorted
比較值賦予1
如果值介於然後用np.where
有條件地創建數組:
a = np.array([ 3.497 , 3.0935 , 3.3625 , 3.56425, 3.497 , 4.10225,
2.75725, 3.766 , 2.959 , 3.9005 ])
np.where(np.searchsorted(np.percentile(a, [5, 95]), a) == 1, 1, 100)
# array([ 1, 1, 1, 1, 1, 100, 100, 1, 1, 1])
這不使用np.heavenside
功能,所以我不知道,這就是你要找的東西,但它的工作原理:
ret_arr = (99*np.logical_or((array<np.percentile(a,5)),(array>np.percentile(a,95))))+1
它使用底部和頂部5個百分點之間的比較,然後您可以在一個boleean數組上進行數學運算。
在這種情況下:
In[73]: ret_arr
Out[73]: array([ 1, 1, 1, 1, 1, 100, 100, 1, 1, 1])
編輯:使用或代替和