gpt4 book ai didi

python - 数组比较

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:36 25 4
gpt4 key购买 nike

如果我比较两个 float64 类型的 ndarray,其中一个为空,我得到一个空的 bool 数组:

x = np.array([1.0,2.1]) #dtype is float64
y = np.array([]) #dtype is float64

x==y 返回 dtype 为 bool 的空 ndarray。

但是,如果我比较两个 int32 类型的 ndarray,其中一个为空,我得到 False:

a = np.array([1,2])
b = np.array([], dtype='int32')

a==b 返回 False

什么给了?为什么返回的类型不同?我要做的是比较两个 float64 类型的 ndarrays。

这是在 python 2.6.4、numpy 1.6.1、Windows XP 上完成的

编辑:“尝试做的是比较‘float5’类型的两个 ndarrays”->“尝试比较‘float64’类型的两个 ndarrays”。

最佳答案

首先,

a = np.array([1,2])
b = np.array([], dtype='int32')

a 不一定是 int32 数组;这将取决于您机器的 native 整数类型。我无法解释您的空 bool 数组行为,因为我无法重现它。

现在,“比较 float64 类型的两个 ndarray”是什么意思?比较它们,看看它们是否具有相同的形状,是否每个元素都相同?由于多种原因,使用 == 不是一个好主意。

一方面,当两者形状相同时,结果将不是 bool 值,而是 bool 值数组。至少,您需要对结果数组调用 np.all()

此外,如果一个或另一个数组是某些浮点计算的结果,由于浮点舍入误差,它们可能实际上相等但不完全相等。 np.allclose(a1, a2) 函数专为这种情况而设计(您可以指定关键字参数来更改容差级别);如果两个数组的形状不同,它也会优雅地返回 False

关于python - 数组比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10100380/

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