[英]Check if each element of 1-D numpy array is in corresponding row of 2-D numpy array
我有两个数组:
X = np.array([[3, 4, 1], [2, 3, 4], [3, 5, 1]])
v = np.array([1, 5, 3])
我想检查 v 是否在 X 元素中,即 1 在 [3, 4, 1] 中,5 在 [2, 3, 4] 中,3 在 [3, 5, 1] 中并返回1 和 0。所以,在这种情况下,我的答案应该是 [1,0,1]。
谢谢
为 v 创建新轴:
>>> np.any(X - v[:, np.newaxis] == 0, axis=1) * 1
array([1, 0, 1])
numpy.newaxis :newaxis 对象可用于所有切片操作以创建长度为 1 的轴。 newaxis 是 'None' 的别名,可以使用 'None' 代替它,结果相同。
表现
X = np.random.randint(100, 1000, (100000, 1000))
v = np.random.randint(100, 1000, 100000)
%timeit np.any(X - v[:, np.newaxis] == 0, axis=1) * 1
880 ms ± 110 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
我不太了解 NumPy 来使用array
对象,但我已经创建了一个可以与普通列表一起使用的函数:
def check_correspondence(lists, numbers):
for i in range(len(lists)):
yield int(numbers[i] in lists[i])
每当您调用check_correspondence
,您都需要将其转换为列表或元组,因为它是一个生成器。 无论如何,它可以修改为接受numpy.array
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.