【问题标题】:selecting data in numpy array with different conditions在具有不同条件的numpy数组中选择数据
【发布时间】:2015-11-13 18:31:36
【问题描述】:

我有一个类似于以下的 numpy 数组:

a = np.array([1,1,1],
             [1,1,1],
             [2,1,1],
             [2,3,1],
             [2,3,1],
             [2,3,1],
             [3,4,1],
             [3,4,1],
             [3,4,1],
 ])

并想提取

所在的行
a[0,:] >=2 and a[1,:] < 4 

变成b,得到:

b = np.array([2,1,1],
             [2,3,1],
             [2,3,1],
             [2,3,1],
 ])

我试过了

b = a[(a[0,:] >=2) & (a[1,:] < 4 )]

b = a[np.where((a[0,:] >=2) & (a[1,:] < 4 ))]

但这不起作用。有什么想法吗?

谢谢! 豪尔赫

【问题讨论】:

  • a[0,:] 是第一行。你想要第一列吗?第一列是a[:, 0]
  • 啊,就是这样,基本错误,无法发现,抱歉。谢谢!
  • 调试时,我喜欢看那个内部布尔掩码。深入挖掘并查看碎片通常更有效率,而不是在上面进行另一层计算(例如where)。

标签: python arrays numpy where slice


【解决方案1】:

您的条件是使用a 的第一行和第二行,而不是第一列和第二列。 a[:, n] 选择第n列,所以你想要

b = a[(a[:, 0] >= 2) & (a[:, 1] < 4)]

【讨论】:

  • 正是我需要的。谢谢!
【解决方案2】:

我不知道如何一步完成,但你可以做到

b = a[a[:,0]>=2]
c = b[b[:,1]<4]

print c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 2010-12-31
    相关资源
    最近更新 更多