【问题标题】:Return Single True/False Value Based on Exact Match to List根据精确匹配返回单个真/假值到列表
【发布时间】:2018-08-08 14:08:13
【问题描述】:

在 Python 中工作,我的数据如下所示:

myList = [[1,0],
          [0,1],
          [1,1],
          [0,0],
          [0,1]]

我想使用 numpy 来检查每个子列表是否等于特定列表,如果满足条件,则返回单个 True 或 False。

但是,如果我天真地这样做,例如:

evaluation = np.array(myList)==[1,1]

我得到的结果如下所示:

[[True,False],
 [False,True],
 [True,True],
 [False,False],
 [False,True]]

当我真的想要这样的输出时:

[False,
 False,
 True,
 False,
 False]

有什么想法吗?我知道您可以通过列表理解来执行此操作并避免使用 numpy,但似乎应该有一种矢量化的方式来执行上述操作而无需显式循环。真实数据要大得多,采用更快的方法会很有帮助。

【问题讨论】:

  • 它是否以列表形式开始?将其转换为数组需要时间,这可以平衡无循环时间节省。测试列表理解。它可能不会那么慢。

标签: python arrays loops numpy boolean


【解决方案1】:

你可以使用all:

np.equal(myList,[1,1]).all(1).tolist()

或者如@pault所说:

(myList == [1, 1]).all(axis=1)

输出:

[False, False, True, False, False]

【讨论】:

  • 本来是要发(myList == [1, 1]).all(axis=1)的,但它本质上和这个是一样的。
猜你喜欢
  • 2016-02-08
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多