Numpy: is it possible to save dtype columns when using column_stack

When I use column_stack to concatenate numpy arrays, dtype is converted (usually to float)

a = numpy.array([1., 2., 3.], dtype=numpy.float64) b = numpy.array([1, 2, 3], dtype=numpy.int64) print numpy.column_stack((a, b)).dtype >>> float64 

Is there a way to keep dtype of individual columns?

+6
source share
2 answers

You can add two arrays using the numpy.lib.recfunctions method and save the type with it:

 >>> from numpy.lib.recfunctions import append_fields >>> a = numpy.rec.array(a, dtype=[('a', numpy.float64)]) >>> new_a = append_fields(a, 'b', b, usemask=False, dtypes=[numpy.int64]) >>> new_a array([(1.0, 1), (2.0, 2), (3.0, 3)], dtype=[('a', '<f8'), ('b', '<i8')]) >>> new_a['a'] array([ 1., 2., 3.]) >>> new_a['b'] array([1, 2, 3]) 
+1
source

My arrays were converted to a string (S18) when I came across a column.

I used astype (desired dtype) to convert them back to what they were after stacking.

http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.astype.html

example:

 new_array= old_array.astype(float64) 
+1
source

Source: https://habr.com/ru/post/975780/


All Articles