numpy 数组与向量的布尔比较以生成矩阵

xmjla07d  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(77)

我有以下向量:

import numpy as np
x = np.array([0.4, 0.6])
y = np.array([0, 0.2, 0.4, 0.6, 0.8, 1])

字符串
什么样的运算能得到这样的矩阵?

False False True False False False
False False False True False False


换句话说,除了x中的值按行出现在y中之外,所有的值都为False。请注意,我不能使用for循环,因为这是我处理大型矩阵的用例的一个玩具示例。

bvpmtnay

bvpmtnay1#

我把Nin17和chrslg的评论做成了一个答案。x[:, None] == ynp.isclose(x[:,None], y)都可以工作。在测试了每个操作所花费的时间之后,我发现了从1到2000的不同大小的列表的平均每次操作时间:

x[:, None] == y #0.0009190634489059448 sec
np.isclose(x[:,None], y) #0.0032343467473983766 sec

字符串
虽然时间表明x[:, None] == y甚至x.round(z)[:, None] == y.round(z) #0.0010015535354614257 sec可能看起来更快,但np.close的好处是保持了比较值的意图,而没有使用==的数值错误的机会。在评论中可以看到很多例子。

相关问题