Проблема в том, что вы приводите тип данных к значениям с плавающей запятой.Когда вы вызываете numpy.row_stack , тип данных становится строкой.Например:
>>> x = numpy.array([1.34684766e-05, 6.45989985e+02])
>>> s = numpy.array(["col1", "col2"])
>>> numpy.row_stack((x,s))
array([['1.346847', '645.9899'],
['col1', 'col2']],
dtype='|S8')
Я бы предложил использовать numpy.savetxt для этого.Например:
>>> import numpy
>>> t = numpy.array([[ 5.16535888e-06, 4.38980952e+02],
... [ 1.34684766e-05, 3.37237262e+02],
... [ 7.95903202e-06, 6.45989985e+02],
... [ 8.35716563e-06, 3.66632398e+02],
... [ 9.39419622e-06, 7.14825200e+01]])
>>> komponents = numpy.array([["col1", "col2"]])
>>>
>>> import StringIO
>>> s = StringIO.StringIO()
>>> numpy.savetxt(s, komponents, fmt="%s", delimiter="\t")
>>> numpy.savetxt(s, x, delimiter="\t")
>>> print s.getvalue()
col1 col2
5.165358879999999622e-06 4.389809520000000020e+02
1.346847660000000055e-05 3.372372619999999870e+02
7.959032020000000055e-06 6.459899850000000470e+02
8.357165630000000265e-06 3.666323980000000233e+02
9.394196219999999191e-06 7.148251999999999384e+01