【问题标题】:How to index numpy array on subset of array of bools that is smaller than numpy array's dimensions?如何在小于numpy数组维度的布尔数组子集上索引numpy数组?
【发布时间】:2015-09-09 15:34:29
【问题描述】:

我的问题受到另一个问题的启发:Intersection of 2d and 1d Numpy array我正在寻找一个不使用in1d的简洁解决方案

设置是这样的。我有一个numpy arraybools 告诉我应该将numpy array A 的哪些值设置为0,称为listed_array。但是,我想忽略listed_array 的前 3 列中的信息,只将 A 设置为零,如listed_array 的其他列中所示。

我知道以下是不正确的:

A[listed_array[:, 3:]] = 0

我也知道我可以通过调用hstack 来填充listed_array 的这个子集,这将产生正确的输出,但是还有更简洁的吗?

【问题讨论】:

  • Alisted_array 的形状是否相同?
  • 如果是这样,这是否意味着您不想更改A 的前三列中的任何内容?

标签: python numpy


【解决方案1】:

如果我理解了这个问题,应该这样做:

A[:, 3:][listed_array[:, 3:]] = 0

这是一个简洁的版本

mask3 = listed_array[:, 3:]
A3 = A[:, 3:]   # This slice is a *view* of A, so changing A3 changes A.
A3[mask3] = 0

【讨论】:

  • 当然可以!错过了这个我觉得很傻。谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-06-19
  • 2017-09-24
  • 2013-07-20
  • 2018-05-20
  • 2021-01-06
  • 1970-01-01
  • 2012-04-10
  • 2020-03-25
相关资源
最近更新 更多