Python 从1D数组中删除值

Python 从1D数组中删除值,python,numpy,Python,Numpy,我有一个一维数组,通过绘制一个历史图并用高斯函数拟合它,我想创建一个信噪比图(用高斯函数的sigma标度)。 我在几个地方有值0,但我只想保留0的值 我可以这样写剧本吗 new_SN_map = temp_SN_map[(temp2_SN_map < 0) & (temp_SN_map > 0)] new_snu-map=temp_-snu-map[(temp2_-snu-map0)] 有没有办法自动删除值0?对于将来的读者,我将重命名您的数组以使其更通用: array

我有一个一维数组,通过绘制一个历史图并用高斯函数拟合它,我想创建一个信噪比图(用高斯函数的sigma标度)。 我在几个地方有值0,但我只想保留<0和>0的值

我可以这样写剧本吗

new_SN_map = temp_SN_map[(temp2_SN_map < 0) & (temp_SN_map > 0)]
new_snu-map=temp_-snu-map[(temp2_-snu-map<0)和(temp_-snu-map>0)]

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

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

array = temp_SN_map

关于你的问题,有不同的方法。首先,你的建议会奏效:

new_array = array[(array < 0) & (array > 0)]
  • 使用
    np.nonzero()
    特别适合排除非零值

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

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


但是请注意,它们中的每一个都可以完成其他阵列所做的一切,这主要取决于您认为最合适/可读的内容,或者如果您关心效率,则需要以最快的速度计时。

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

array = temp_SN_map
foo is your 1D numpy array.

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

关于你的问题,有不同的方法。首先,你的建议会奏效:

new_array = array[(array < 0) & (array > 0)]
  • 使用
    np.nonzero()
    特别适合排除非零值

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

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


但是,请注意,它们中的每一个都可以做其他人正在做的任何事情,这主要取决于您认为什么是最合适/可读的,或者如果您关心效率,您需要以最快的速度计时。

我有一个问题,需要进一步说明。假设我有一个二维数组。为什么我应用这个过程时2D数组变成1D数组?因为numpy只能处理有间隙的2D数组,所以它必须将它们转换为1D。您还可以使用
np.mgrid
np.ogrid
来保存坐标信息。我有一个问题需要进一步讨论。假设我有一个二维数组。为什么我应用这个过程时2D数组变成1D数组?因为numpy只能处理有间隙的2D数组,所以它必须将它们转换为1D。您还可以使用
np.mgrid
np.ogrid
保存坐标信息。
foo is your 1D numpy array.

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