summaryrefslogtreecommitdiff
path: root/numpy/lib/npyio.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/lib/npyio.py')
-rw-r--r--numpy/lib/npyio.py43
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)