![](/img/trans.png)
[英]Masking numpy arrays to select specific rows, based on another boolean array
[英]Select subset of rows of numpy array based on a selection of rows in another array
我有 2 个 numpy arrays 并且我想 select 根据另一个的条件子集在其中一个中的行子集
arr1 = np.array([[1, 2, 1, 5], [3, 4, 1, 6], [2, 2, 2, 7]])
arr2 = np.array([[2, 2, 1], [2, 3, 0], [2, 1, 1]])
我想 select 仅arr1
中的那些行,其中arr2
中的第三个元素是 1。在这种情况下, arr2
看起来像这样: np.array([[2, 2, 1], [2, 1, 1]])
arr1
将变为: np.array([[1, 2, 1, 5], [2, 2, 2, 7]])
。 可以假设它们都具有相同的行数,但可以具有不同的列数。 我怎样才能做到这一点?
In [500]: arr2
Out[500]:
array([[2, 2, 1],
[2, 3, 0],
[2, 1, 1]])
每行的第三个元素:
In [502]: arr2[:,2]
Out[502]: array([1, 0, 1])
In [503]: arr2[:,2]==1
Out[503]: array([ True, False, True])
将此 boolean 掩码应用于 arr1 的 select 行:
In [504]: arr1[arr2[:,2]==1]
Out[504]:
array([[1, 2, 1, 5],
[2, 2, 2, 7]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.