Skip to main content
 首页 » 编程设计

python之从一维数组中删除一个值

2025年05月04日18Free-Thinker

我有一个一维数组,通过绘制直方图并用高斯拟合它,我想创建一个信号噪声图(使用高斯的西格玛标度)。 我在几个地方都有值 0,但我只想保留值 < 0 和 > 0。

我可以这样写我的脚本吗?

new_SN_map = temp_SN_map[(temp2_SN_map < 0) & (temp_SN_map > 0)] 

有没有办法自动删除值0?

请您参考如下方法:

对于 future 的读者,我将重命名您的数组以使其更通用:

array = temp_SN_map 

关于你的问题,有不同的方法。对于初学者,您的建议可行:

new_array = array[(array < 0) & (array > 0)] 

但还有其他选择:

new_array = array[array != 0]        # using only one comparison 
 
import numpy as np 
new_array = array[np.nonzero(array)] # using np.nonzero 
 
new_array = array[np.where(array)]   # using np.where 
  • 使用 np.nonzero() 1 特别适合排除非零值。

  • 使用 np.where() 2 或 != 0用于排除特殊值。

  • 使用 (a < 0) & (a > 0)如果你想排除某个范围是很好的。

但是请注意,每个人都可以做其他人正在做的所有事情,因此这主要取决于您认为最合适/可读的内容,或者如果您关心效率,则需要为最快的时间计时。