如何比较python中的数组列表?

时间:2015-06-11 06:53:38

标签: python python-2.7 numpy

我想比较两个变量input_itemstemp是否相等。为了让您了解他们的数据类型 -

print input_items

打印 -

[array([ 50., 1., 0., ..., 0., 0., 0.], dtype=float32), array([ 50., -2., 0., ..., 0., 0., 0.], dtype=float32)]

在Python中最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

我认为allclose对你的情况有好处,因为你需要比较浮点数

import numpy as np
a = np.arange(10)
print a
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
b = np.arange(10)
print b
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print np.allclose(a, b)
#True
b[1] = 10    
#array([ 0, 10,  2,  3,  4,  5,  6,  7,  8,  9])
print  np.allclose(a, b)
#False

要比较数组列表,您可以将np.allclose与all

组合
a = [np.array([1, 2, 3]), np.array([1, 2, 3])]
b = [np.array([1, 2, 3]), np.array([1, 2, 3])]
all([np.allclose(x, y) for x, y in zip(a, b)])#True
b = [np.array([1, 2, 3]), np.array([1, 2, 4])]
all([np.allclose(x, y) for x, y in zip(a, b)])#False

PS抱歉我的英语不好

答案 1 :(得分:2)

如前所述,您应该构建二维数组并使用numpy.allclose。

import numpy
#lists of arrays
yourarray1 = [numpy.random.random(5) for i in range(3)]
yourarray2 = [numpy.random.random(5) for i in range(3)]

#2-D arrays with list elements as rows
nw2Darray1 = numpy.array(yourarray1).reshape((3,5))
nw2Darray2 = numpy.array(yourarray2).reshape((3,5))

numpy.allclose(nw2Darray1,nw2Darray2) #returns True/False