numpy 过滤 2D
numpy filtering 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()
我要筛选值:
select 沿 x 轴的所有值小于或等于 -1.3,沿 y 轴的所有值小于或等于 -0.9。基本上就是抓取图中左下方框内的4个点。
这是我的代码:
x[x[:, 0] <= -1.3, x[:, 1] <= -0.9]
但这给出了错误:
IndexError: boolean index did not match indexed array along dimension
1; dimension is 2 but corresponding boolean dimension is 100
您可以使用元素乘积组合两个布尔掩码,然后用它索引 x
:
>>> x[(x[:, 0] <= -1.3)*(x[:, 1] <= -0.9)]
array([[-1.41242713, -1.0017676 ],
[-1.30424828, -1.20114282],
[-1.3234422 , -1.29396616]])
您可以尝试只为和 &
添加运算符,如下所示:
x[(x[:, 0] <= -1.3) & (x[:, 1] <= -0.9)]
我有一个示例二维 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()
我要筛选值: select 沿 x 轴的所有值小于或等于 -1.3,沿 y 轴的所有值小于或等于 -0.9。基本上就是抓取图中左下方框内的4个点。
这是我的代码:
x[x[:, 0] <= -1.3, x[:, 1] <= -0.9]
但这给出了错误:
IndexError: boolean index did not match indexed array along dimension 1; dimension is 2 but corresponding boolean dimension is 100
您可以使用元素乘积组合两个布尔掩码,然后用它索引 x
:
>>> x[(x[:, 0] <= -1.3)*(x[:, 1] <= -0.9)]
array([[-1.41242713, -1.0017676 ],
[-1.30424828, -1.20114282],
[-1.3234422 , -1.29396616]])
您可以尝试只为和 &
添加运算符,如下所示:
x[(x[:, 0] <= -1.3) & (x[:, 1] <= -0.9)]