gpt4 book ai didi

python - NumPy array_equal 函数未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:03 27 4
gpt4 key购买 nike

我观察到 NumPy 中函数 array_equal 的非常奇怪的行为。我确信我遗漏了一个非常简单的细节。

我要完成的是单元测试。

事实是,我有数组 1:

In[21]: bounds['lowerBound']

Out[21]: array([ 1. , 1.2, 1.8])

我有数组 2:

In[22]: res['lowerBound']

Out[22]: array([ 1. , 1.2, 1.8])

以防万一我确实检查了它们的形状:

In[26]: bounds['lowerBound'].shape
Out[26]: (3,)
In[28]: res['lowerBound'].shape
Out[28]: (3,)

还有数据类型:

In[30]: res['lowerBound'].dtype
Out[30]: dtype('float64')
In[31]: bounds['lowerBound'].dtype
Out[31]: dtype('float64')

当我尝试验证它们是否相同时:

In[29]:  np.array_equal(bounds['lowerBound'],res['lowerBound'])
Out[29]: False

这怎么可能?

提前致谢!

编辑:用于生成数据的代码是:

bounds={'lowerBound':np.array([1.,1.2,1.8]), 'upperBound':np.array([10.,12.,18.])}

res 字典由以下函数生成:

def generateAdjustedBounds(self,universeMktCap,lowerBound,upperBound):
lb=np.zeros(len(universeMktCap))
ub=np.zeros(len(universeMktCap))
lb[0]=lowerBound
ub[0]=upperBound

for dat in range(1,len(lb)):
lb[dat]=lb[dat-1]*universeMktCap[dat]/universeMktCap[dat-1]
ub[dat]=ub[dat-1]*universeMktCap[dat]/universeMktCap[dat-1]

Bounds={'lowerBound':np.array(lb),'upperBound':np.array(ub)}

return Bounds

最佳答案

因为您的元素是 float ,您可能应该改用 allclose()。

http://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html

关于python - NumPy array_equal 函数未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32696355/

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