What is the significance of the underscore suffixing in int_
, float_
, etc.?
If you're unsure if your variable is scalar, list, or array, using the ones with "_" will ensure your code will work regardless (if that's the behavior you intended). See the example code below.
import numpy as np
scalar = 3
L1 = [3]
L2 = [1, 2, 3]
np.float(scalar) # okay
np.float(L1) # breaks (TypeError)
np.float(L2) # breaks (TypeError)
np.float_(scalar) # okay
np.float_(L1) # okay
np.float_(L2) # okay
From page 21 of Guide to Numpy by TE Oliphant:
Names for the data types that would clash with standard Python object names are followed by a trailing underscore, ’ ’. These data types are so named because they use the same underlying precision as the corresponding Python data types.
. . .
The array types
bool_
,int_
,complex_
,float_
,object_
,unicode_
, andstr_
are enhanced-scalars. They are very similar to the standard Python types (without the trailing underscore) and inherit from them (except forbool_
andobject_
). They can be used in place of the standard Python types whenever desired. Whenever a data type is required, as an argument, the standard Python types are recognized as well.