diff options
Diffstat (limited to 'numpy/lib/npyio.py')
-rw-r--r-- | numpy/lib/npyio.py | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/numpy/lib/npyio.py b/numpy/lib/npyio.py index 7f66fb141..2154acdce 100644 --- a/numpy/lib/npyio.py +++ b/numpy/lib/npyio.py @@ -19,13 +19,15 @@ from ._iotools import LineSplitter, NameValidator, StringConverter, \ _is_string_like, has_nested_fields, flatten_dtype, \ easy_dtype, _bytes_to_name -from numpy.compat import asbytes, asstr, asbytes_nested, bytes +from numpy.compat import asbytes, asstr, asbytes_nested, bytes, basestring from io import BytesIO if sys.version_info[0] >= 3: import pickle + imap = map else: import cPickle as pickle + imap = itertools.imap loads = pickle.loads @@ -783,14 +785,14 @@ def loadtxt(fname, dtype=float, comments='#', delimiter=None, # Skip the first `skiprows` lines for i in range(skiprows): - fh.next() + next(fh) # Read until we find a line with some values, and use # it to estimate the number of columns, N. first_vals = None try: while not first_vals: - first_line = fh.next() + first_line = next(fh) first_vals = split_line(first_line) except StopIteration: # End of lines reached @@ -1342,13 +1344,13 @@ def genfromtxt(fname, dtype=float, comments='#', delimiter=None, skip_header = skiprows # Skip the first `skip_header` rows for i in range(skip_header): - fhd.next() + next(fhd) # Keep on until we find the first valid values first_values = None try: while not first_values: - first_line = fhd.next() + first_line = next(fhd) if names is True: if comments in first_line: first_line = asbytes('').join(first_line.split(comments)[1:]) @@ -1602,12 +1604,12 @@ def genfromtxt(fname, dtype=float, comments='#', delimiter=None, # Upgrade the converters (if needed) if dtype is None: for (i, converter) in enumerate(converters): - current_column = map(itemgetter(i), rows) + current_column = [itemgetter(i)(_m) for _m in rows] try: converter.iterupgrade(current_column) except ConverterLockError: errmsg = "Converter #%i is locked and cannot be upgraded: " % i - current_column = itertools.imap(itemgetter(i), rows) + current_column = imap(itemgetter(i), rows) for (j, value) in enumerate(current_column): try: converter.upgrade(value) @@ -1653,19 +1655,20 @@ def genfromtxt(fname, dtype=float, comments='#', delimiter=None, # Convert each value according to the converter: # We want to modify the list in place to avoid creating a new one... -# if loose: -# conversionfuncs = [conv._loose_call for conv in converters] -# else: -# conversionfuncs = [conv._strict_call for conv in converters] -# for (i, vals) in enumerate(rows): -# rows[i] = tuple([convert(val) -# for (convert, val) in zip(conversionfuncs, vals)]) + # + # if loose: + # conversionfuncs = [conv._loose_call for conv in converters] + # else: + # conversionfuncs = [conv._strict_call for conv in converters] + # for (i, vals) in enumerate(rows): + # rows[i] = tuple([convert(val) + # for (convert, val) in zip(conversionfuncs, vals)]) if loose: - rows = zip(*[map(converter._loose_call, map(itemgetter(i), rows)) - for (i, converter) in enumerate(converters)]) + rows = list(zip(*[[converter._loose_call(_r) for _r in map(itemgetter(i), rows)] + for (i, converter) in enumerate(converters)])) else: - rows = zip(*[map(converter._strict_call, map(itemgetter(i), rows)) - for (i, converter) in enumerate(converters)]) + rows = list(zip(*[[converter._strict_call(_r) for _r in map(itemgetter(i), rows)] + for (i, converter) in enumerate(converters)])) # Reset the dtype data = rows if dtype is None: @@ -1690,8 +1693,8 @@ def genfromtxt(fname, dtype=float, comments='#', delimiter=None, mdtype = [(defaultfmt % i, np.bool) for (i, dt) in enumerate(column_types)] else: - ddtype = zip(names, column_types) - mdtype = zip(names, [np.bool] * len(column_types)) + ddtype = list(zip(names, column_types)) + mdtype = list(zip(names, [np.bool] * len(column_types))) output = np.array(data, dtype=ddtype) if usemask: outputmask = np.array(masks, dtype=mdtype) |