从1D数组中删除值

时间:2016-04-04 23:35:48

标签: python numpy

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

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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)

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

答案 1 :(得分:1)

foo is your 1D numpy array.

foo[np.where(foo != 0)]