python - 使用一维 bool 数组过滤二维数组

标签 python arrays numpy

<分区>

我有两个 numpy 数组。

x = [[1,2], [3,4], [5,6]]
y = [True, False, True]

我想获取 X 的元素,其中 y 的对应元素为 True:

filtered_x = filter(x,y)
print(filtered_x) # [[1,2], [5,6]] should be shown.

我试过 np.extract,但它似乎只在 x 是一维数组时有效。如何提取 x 对应的 y 值为 True 的元素?

最佳答案

只需使用 boolean indexing :

>>> import numpy as np

>>> x = np.array([[1,2], [3,4], [5,6]])
>>> y = np.array([True, False, True])
>>> x[y]   # or "x[y, :]" because the boolean array is applied to the first dimension (in this case the "rows")
array([[1, 2],
       [5, 6]])

如果您想将它应用于列而不是行:

>>> x = np.array([[1,2], [3,4], [5,6]])
>>> y = np.array([True, False])
>>> x[:, y]  # boolean array is applied to the second dimension (in this case the "columns")
array([[1],
       [3],
       [5]])

关于python - 使用一维 bool 数组过滤二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46000906/

相关文章:

python - 如何在 Django 模型上定义任何一年的月份范围?

java - 解析 JSONObjects 和 JSONArrays 的最佳方式

arrays - 在 C 中声明、更改和添加到结构列表的数组

java - 将 double[] 转换为 long[]

Python,确定是否应将字符串转换为 Int 或 Float

python - 如何从 Pandas 数据框中获取 key

python - 如何在 Python 的单元测试框架中模拟返回 self 的方法

python - 这段代码有什么问题? Module 类型的未知属性 'array'(<module 'numpy' from filename __init__.py'>

python - 在 Python 中创建假数据

python - 如何在python中生成特定范围内的n维随机变量