带字符串和数字的numpy.hstack删除小数

时间:2017-06-05 11:00:01

标签: python string numpy append decimal

我正在尝试创建一个以CSV格式导出的表格。我必须附加不同的数值(带小数),我还想附加一个指标列。这是由空格“_”和“X”组成的,以帮助我处理数据的后期处理。 正如您在下面的代码中看到的那样,虽然我只附加数字值,但是如果我追加字符串列,则小数值会消失。

我想我也会为指标列使用数值,但我想了解这种行为。是否可以附加字符串列和数值以避免消除小数?

>>> c = np.hstack((b,error_perc_notabs_array,error_array))
>>> c
array([[  3.63200000e-01,   6.52800000e-01,   4.70400000e-01,
          2.13117665e-02,   2.52124411e-02,   1.83029153e+01,
          3.90067457e-03],
       [  4.16000000e-01,   7.82400000e-01,   4.48000000e-01,
          2.25692703e-02,   4.35769819e-02,   9.30810405e+01,
          2.10077116e-02]])
>>> z
[array([' '], 
      dtype='|S1'), array(['X'], 
      dtype='|S1')]
>>> shape(z)
(2L, 1L)
>>> d = np.hstack((z,c))
>>> d
array([[' ', '0', '0', '0', '0', '0', '1', '0'],
       ['X', '0', '0', '0', '0', '0', '9', '0']], 
      dtype='|S1') 

1 个答案:

答案 0 :(得分:0)

Numpy将所有元素转换为通用数据类型,在您的情况下为S1,长度为1的字符串。

尽管如此,我的测试显示,常见数据类型os S1floatS32

>>> z = array([['X'],[' ']], dtype='S1')
>>> d = numpy.hstack((z,c))
>>> d
array([[b'X', b'0.3632', b'0.6528', b'0.4704', b'0.0213117665',
        b'0.0252124411', b'18.3029153', b'0.00390067457'],
       [b' ', b'0.416', b'0.7824', b'0.448', b'0.0225692703',
        b'0.0435769819', b'93.0810405', b'0.0210077116']], 
      dtype='|S32')