python - numpy 过滤 2D
问题描述
我有一个示例 2D np 数组,如下所示:
x = np.random.normal(loc = -1, scale = 0.2, size = (100, 2))
x.shape
# (100, 2)
# Visualizing the distribution:
plt.scatter(x[:, 0], x[:, 1])
plt.show()
我想过滤值:选择沿 x 轴小于或等于 -1.3 的所有值以及沿 y 轴小于或等于 -0.9 的所有值。基本上,捕获图左下方方框内的 4 个点。
这是我的代码:
x[x[:, 0] <= -1.3, x[:, 1] <= -0.9]
但这给出了错误:
IndexError:布尔索引与维度 1 的索引数组不匹配;维度为 2 但对应的布尔维度为 100
解决方案
您可以使用元素乘积组合两个布尔掩码,然后x
使用它进行索引:
>>> x[(x[:, 0] <= -1.3)*(x[:, 1] <= -0.9)]
array([[-1.41242713, -1.0017676 ],
[-1.30424828, -1.20114282],
[-1.3234422 , -1.29396616]])
推荐阅读
- haskell - 在haskell中的输入字符串列表上应用PDA转换
- r - R中的函数在楼梯中排列硬币。任务是确定完成的楼梯中完整的硬币行数
- powershell - 从长字符串中提取日期和时间
- php - 使用 include_once 向类添加更多方法
- wso2 - 有没有办法不在 WSO2 JWT 授权流程中生成刷新令牌?
- azure - 能否以编程方式为 Azure 服务主体创建新密码?
- asp.net - 在 .NET WebForms 中从我自己的数据库中获取角色
- java - 从特定数组中提取特定 JSON 对象以通过 Android 中的 Intent 放入另一个活动
- html - 为什么里面没有src
- c++ - asio::strand 上的任务在单个线程上运行