[Numpy-discussion] hstack(arr_Int32, arr_float32) fails because of casting rules
oliphant.travis at ieee.org
Thu Aug 24 23:03:10 CDT 2006
Sebastian Haase wrote:
> On Thursday 24 August 2006 17:28, Travis Oliphant wrote:
>> Sebastian Haase wrote:
>>> I get
>>> TypeError: array cannot be safely cast to required type
>>> when calling hstack() ( which calls concatenate() )
>>> on two arrays being a int32 and a float32 respectively.
>>> I understand now that a int32 cannot be safely converted into a float32
>>> but why does concatenate not automatically
>>> up(?) cast to float64 ??
>> Basically, NumPy is following Numeric's behavior of raising an error in
>> this case of unsafe casting in concatenate. For functions that are not
>> universal-function objects, mixed-type behavior works basically just
>> like Numeric did (using the ordering of the types to determine which one
>> to choose as the output).
>> It could be argued that the ufunc-rules should be followed instead.
> Are you saying the ufunc-rules would convert "int32-float32" to float64 and
> hence make my code "just work" !?
This is now the behavior in SVN. Note that this is different from both
Numeric (which gave an error) and numarray (which coerced to float32).
But, it is consistent with how mixed-types are handled in calculations
and is thus an easier rule to explain.
Thanks for the testing.
More information about the Numpy-discussion