[NumPy-Tickets] [NumPy] #1665: genfromtxt returns inconsistent output if column converters are used
NumPy Trac
numpy-tickets@scipy....
Thu Nov 11 12:19:48 CST 2010
#1665: genfromtxt returns inconsistent output if column converters are used
--------------------+-------------------------------------------------------
Reporter: dmoore | Owner: somebody
Type: defect | Status: needs_decision
Priority: normal | Milestone: 2.0.0
Component: Other | Version: 1.4.1
Keywords: |
--------------------+-------------------------------------------------------
Changes (by pierregm):
* status: new => needs_decision
Comment:
As you've seen, the output of your converter is not detected as a float,
but as an object. That's an unfortunate side effect of using a lambda
function such as yours: what if your input string has only 1 character ?
You end up taking the float of an empty string, which raises a ValueError.
In practice, that's exactly what happens below the hood when
{{{genfromtxt}}} tries to guess the output type of the converter. It tries
a single value ('1'), fails, and decides that the result must be an
object... Probably not the best strategy, as it crashes in your case. But
yours is a buggy case anyway.
Try that instead of your lambda function
{{{
def func(s):
try:
r = float(s[1:])
except ValueError:
r = 1.
return r
}}}
You could object that as the dtype is defined, it should take precedence
over the output typeof the converter. Well, I assumed exactly the
opposite: if the user took the time to define a converter, we should
respect his/her choice and overwrite the dtype.
--
Ticket URL: <http://projects.scipy.org/numpy/ticket/1665#comment:1>
NumPy <http://projects.scipy.org/numpy>
My example project
More information about the NumPy-Tickets
mailing list