nodes: 0, module; 1, function_definition; 2, function_name:arglexsort; 3, parameters; 4, block; 5, identifier:arrays; 6, expression_statement; 7, expression_statement; 8, expression_statement; 9, for_statement; 10, return_statement; 11, comment:"""
      Returns the indices of the lexicographical sorting
      order of the supplied arrays.
      """; 12, assignment; 13, assignment; 14, pattern_list; 15, call; 16, block; 17, call; 18, identifier:dtypes; 19, call; 20, identifier:recarray; 21, call; 22, identifier:i; 23, identifier:array; 24, identifier:enumerate; 25, argument_list; 26, expression_statement; 27, attribute; 28, argument_list; 29, attribute; 30, generator_expression; 31, attribute; 32, argument_list; 33, identifier:arrays; 34, assignment; 35, identifier:recarray; 36, identifier:argsort; 37, string; 38, identifier:join; 39, attribute; 40, for_in_clause; 41, identifier:np; 42, identifier:empty; 43, call; 44, keyword_argument; 45, subscript; 46, identifier:array; 47, string_content:,; 48, attribute; 49, identifier:str; 50, identifier:array; 51, identifier:arrays; 52, identifier:len; 53, argument_list; 54, identifier:dtype; 55, identifier:dtypes; 56, identifier:recarray; 57, binary_operator:'f%s' % i; 58, identifier:array; 59, identifier:dtype; 60, subscript; 61, string; 62, identifier:i; 63, identifier:arrays; 64, integer:0; 65, string_content:f%s
code: def arglexsort(arrays):
      """
      Returns the indices of the lexicographical sorting
      order of the supplied arrays.
      """
      dtypes = ','.join(array.dtype.str for array in arrays)
      recarray = np.empty(len(arrays[0]), dtype=dtypes)
      for i, array in enumerate(arrays):
          recarray['f%s' % i] = array
      return recarray.argsort()