【发布时间】:2016-12-23 13:27:03
【问题描述】:
我有一个 2D NumPy 数组,其中包含如下元素:
[[-10, 0]
[-9, 1]
[ 9, -5]
[-8, 6]
[-7, -5]
[-7, -6]
[ 0, -10]]
我想只存储那些满足以下条件的元素:
- 第一列的值在范围内:
-10 <= x <= 0
和
- 第二列的值在范围内:
-9 <= y <= 1
选择后的数组应如下所示:
[[-10, 0]
[-9, 1]
[-7, -6]
[-7, -5]]
【问题讨论】:
-
查看
np.logical_and()。 -
@Divakar 我如何将它用于二维数组?有没有一种方法我不必将 2d 数组拆分为 2 个数组然后应用
logical_and()? -
您不需要拆分,只需切片:
a[:,0]和a[:,1]。 -
@Divakar 限制对于 x 和 y 来说是不同的,我只是为了这个例子而把它们放在一起。我将在问题中对其进行编辑。
-
对 col0 使用
(a[:,0]>=-10) & (a[:,0]<=0),对 col1 使用类似的限制,然后对这两个掩码执行AND并使用布尔索引选择带有 [mask] 的a之外的行。跨度>
标签: python arrays performance numpy