【问题标题】:Masking numpy arrays to select specific rows, based on another boolean array根据另一个布尔数组屏蔽 numpy 数组以选择特定行
【发布时间】:2021-05-02 23:57:00
【问题描述】:

假设我有一个这样的数组:

my_arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

或像这样的二维数组:

my_arr = np.array([[1, 1, 11], [2, 1, 0], [3, 3, -1], ..., [10, 9, 0]])

我定义了一个类似的数组

mask_arr = ([1, 1, 0, 0, 1, 0, 1, 1, 0, 1])

我想从掩码数组中得到一个由行组成的新数组,其中它们的索引的mask_arr,元素等于“1”。

例如,第一个数组的结果如下:

[1, 2, 0, 0, 5, 0, 7, 8, , 10]

我试过了

my_arr[my_mask]

但它没有用。有什么解决方案不想写一个 for 循环来做到这一点?

提前谢谢你

【问题讨论】:

  • my_arr[my_mask.astype(bool)].
  • 它正在工作。非常感谢。请您将其作为回复,以便我检查绿色勾号吗? (接受)

标签: python arrays numpy masking


【解决方案1】:

您的mask_arr 看起来像整数类型,当您使用整数数组切片时,该数组被视为索引。所以

my_arr[[0,1,1]]

会给你[row0,row1,row1]。正如您所提到的,您想将mask_arr 视为布尔值,然后您可以将其转换为布尔值:

my_arr[mask_arr.astype('bool')]

将提取mask_arr中与1对应的行。

【讨论】:

    猜你喜欢
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2011-06-05
    • 2021-08-19
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多