从1D数组中删除值

Ess*_*sex 1 python numpy

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

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

new_SN_map = temp_SN_map[(temp2_SN_map < 0) & (temp_SN_map > 0)]
Run Code Online (Sandbox Code Playgroud)

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

MSe*_*ert 5

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

array = temp_SN_map
Run Code Online (Sandbox Code Playgroud)

关于你的问题,有不同的方法.首先,您的提案可行:

new_array = array[(array < 0) & (array > 0)]
Run Code Online (Sandbox Code Playgroud)

但也有其他选择:

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
Run Code Online (Sandbox Code Playgroud)
  • 使用np.nonzero()1特别适合排除非零值.

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

  • (a < 0) & (a > 0)如果要排除某个范围,使用是很好的.

但请注意,每个人都可以做其他人正在做的事情,所以它主要依赖于你认为最合适/可读的东西,或者如果你关心效率,你需要把它计算得最快.