gpt4 book ai didi

python - 如何在 numpy 数组和向量行之间执行包含操作?

转载 作者:太空狗 更新时间:2023-10-29 20:35:39 27 4
gpt4 key购买 nike

现在我有了一个 numpy 数组,

[[1 2]
[3 4]
[2 5]]

和一个向量。

[2,
5,
2]

我想在数组和向量行之间执行包含操作。换句话说,我想检查第一行[1, 2]是否包含2,第二行是否包含[3, 4]包含 5。预期的输出如下所示:

[True, False, True] 

如何实现这个功能?非常感谢。

最佳答案

您可以将向量广播到列中,将其等同于矩阵行中的所有元素,然后查看是否 any每行中的元素都是 True:

import numpy as np

a = np.array(
[[1, 2],
[3, 4],
[2, 5]])
v = np.array([2, 5, 2]).reshape(-1, 1)

np.any(a == v, axis=1)

https://ideone.com/YmWtlv

reshape将您的一维(行)向量转换为列向量。这是必要的,因为通常 broadcasting沿着右边排列形状,所以你需要一个明确的尾随维度 1。完成同样事情的另一种方法是使用 newaxis (又名 None):

v = np.array([2, 5, 2])[..., np.newaxis]

注意

我原来的答案建议reduce使用 logical_or ,这只是 any 的一种更复杂的表达方式:

np.logical_or.reduce(a == v, axis=1)

关于python - 如何在 numpy 数组和向量行之间执行包含操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51257041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com