2024-10-02 08:19:19 发布
网友
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。这里有没有类似heaveside的功能?你知道吗
它没有使用np.heavenside函数,所以我不确定它是否是您要找的,但它可以工作:
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])
编辑:使用或代替and
用np.percentile计算5%和95%怎么样?首先,将数组中的值与np.searchsorted的两个阈值进行比较,如果值介于1之间,则给出1,然后用np.where有条件地创建数组:
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数组进行数学运算。你知道吗
在这种情况下:
编辑:使用或代替and
用
np.percentile
计算5%和95%怎么样?首先,将数组中的值与np.searchsorted
的两个阈值进行比较,如果值介于1
之间,则给出1
,然后用np.where
有条件地创建数组:相关问题 更多 >
编程相关推荐