python - 根据另一个布尔数组屏蔽 numpy 数组以选择特定行
问题描述
假设我有一个这样的数组:
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循环来做到这一点的解决方案?
先感谢您
解决方案
您mask_arr
看起来像整数类型,当您使用整数数组切片时,该数组被视为索引。所以
my_arr[[0,1,1]]
会给你[row0,row1,row1]
。正如您所提到的,您想将mask_arr
其视为布尔值,然后您可以将其转换为布尔值:
my_arr[mask_arr.astype('bool')]
1
将提取与in对应的行mask_arr
。
推荐阅读
- javascript - 如何在本机反应中计算两个时刻之间的差异
- pyarrow - 可以用 pyarrow 从 3 个整数数组中创建一个 Date32Array,用于天、月和年吗?
- python - 捕获字符串中的子字符串 - 动态
- python - gcloud monitoring_v3 查询在 AttributeError 'WhichOneof' 上失败
- angular - Angular 11 DI - 未定义 AuthService
- python - AWS Neptune python gremlin 证书验证失败
- python - pygame从opencv相机旋转相机流
- r - 用于保留最后一列的函数
- rust - 从函数参数实现具有生命周期限制的切片特征
- javascript - 带有基于依赖的迭代器的 Lodash `groupBy`