[英]Slicing two numpy arrays by Boolean of the first
假设我有两个长度相同的numpy数组。
a = array([1, 0, 1, 1, 0, 1])
b = array([0, 1, 1, 1, 0, 0])
我可以对a进行切片,以便仅获得1的值。
a_slice = array([1, 1, 1, 1]).
我将如何基于a = 1的位置类似地切片b?
我会需要
b_slice = array([0, 1, 1, 0]).
您可以在第一个数组中切片= = 1的位置。 通过使用a == 1
。
import numpy as np
a = np.array([1, 0, 1, 1, 0, 1])
b = np.array([0, 1, 1, 1, 0, 0])
_slice = b[a == 1]
print(_slice)
您可以使用a[a == 1]
来获得所有这些,但这似乎用处不大。
您可以将a
为dtype
bool
b[a.astype(bool)]
# array([0, 1, 1, 0])
您可以使用np.where
mask = np.where(a == 1)
a_slice = a[mask]
你得到
array([1, 1, 1, 1])
b_slice = b[mask]
你得到
array([0, 1, 1, 0])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.