Advertisement
Dmitrey15

Untitled

Jan 19th, 2012
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. try:
  2.     import numpypy as N
  3. except:
  4.     import numpy as N
  5.  
  6. def array_equal(a1, a2):
  7.     """
  8.    True if two arrays have the same shape and elements, False otherwise.
  9.  
  10.    Parameters
  11.    ----------
  12.    a1, a2 : array_like
  13.        Input arrays.
  14.  
  15.    Returns
  16.    -------
  17.    b : bool
  18.        Returns True if the arrays are equal.
  19.  
  20.    See Also
  21.    --------
  22.    allclose: Returns True if two arrays are element-wise equal within a
  23.              tolerance.
  24.    array_equiv: Returns True if input arrays are shape consistent and all
  25.                 elements equal.
  26.  
  27.    Examples
  28.    --------
  29.    >>> np.array_equal([1, 2], [1, 2])
  30.    True
  31.    >>> np.array_equal(np.array([1, 2]), np.array([1, 2]))
  32.    True
  33.    >>> np.array_equal([1, 2], [1, 2, 3])
  34.    False
  35.    >>> np.array_equal([1, 2], [1, 4])
  36.    False
  37.  
  38.    """
  39.     try:
  40.         #a1, a2 = asarray(a1), asarray(a2)
  41.         #  N.asarray(v) doesn't work - asarray is unimplemented yet, using walkaround instead.
  42.         # TODO: may be comparison of numpy array with sparse matrix, maybe take care of it?
  43.         # array(sparse matrix) in CPython numpy currently returns array of size one and dtype "object"
  44.         if not isinstance(a1, N.ndarray):
  45.             a1 = N.array(a1)
  46.         if not isinstance(a2, N.ndarray):
  47.             a2 = N.array(a2)
  48.     except:
  49.         return False
  50.     if a1.shape != a2.shape:
  51.         return False
  52.  
  53.    
  54.     # CPython numpy version:
  55.     #return bool(logical_and.reduce(equal(a1,a2).ravel()))
  56.    
  57.     # PyPy version:
  58.     if a1.ndim == 0: # else bug with zero-size array indexation
  59.         return a1 == a2
  60.     Size = a1.size
  61.     f1, f2 = a1.flat, a2.flat
  62.     # TODO: replace xrange by range in Python3
  63.     for i in xrange(Size):
  64.         if f1.next() != f2.next(): return False
  65.     return True
  66.  
  67. if __name__ == '__main__':
  68.     assert array_equal(1, 1)
  69.     assert array_equal([1, 2], [1, 2])
  70.     assert array_equal(N.array([1, 2]), N.array([1, 2]))
  71.     assert array_equal([1, 2], N.array([1, 2]))
  72.     assert not array_equal([1, 2], [1, 2, 3])
  73.     assert array_equal(N.ones([2, 3, 4]), N.ones([2, 3, 4]))
  74.     assert array_equal(N.ones([2, 3, 4]), N.ones([2, 3, 4], int))
  75.     assert not array_equal(N.ones([2, 3, 4]), N.zeros([2, 3, 4], int))
  76.    
  77.     print('passed')
  78.    
  79. #from time import time
  80. #n = 100000
  81. #m = 100
  82. #a = N.zeros(n)
  83. #b = N.ones(n)
  84. #t = time()
  85. #for i in range(m):
  86. #    N.array_equal(a, b)
  87. #print('classic numpy array_equal time elapsed (on different arrays): %0.5f' % (time()-t))
  88. #
  89. #
  90. #t = time()
  91. #for i in range(m):
  92. #    array_equal(a, b)
  93. #print('Alternative array_equal time elapsed (on different arrays): %0.5f' % (time()-t))
  94. #
  95. #b = N.zeros(n)
  96. #
  97. #t = time()
  98. #for i in range(m):
  99. #    N.array_equal(a, b)
  100. #print('classic numpy array_equal time elapsed (on same arrays): %0.5f' % (time()-t))
  101. #
  102. #t = time()
  103. #for i in range(m):
  104. #    array_equal(a, b)
  105. #print('Alternative array_equal time elapsed (on same arrays): %0.5f' % (time()-t))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement