Python:Numpy Data IO,如何为每列按不同的数据类型保存数据?

2024-01-01

我正在尝试使用 numpy.savetxt 将数据转储为每列的各种格式。

当数据为

data = np.array([[1.111, 2.222, 3.333],
                 [4.444, 5.555, 6.666],
                 [7.777, 8.888, 9.999] ])
np.savetxt('data.txt', data, 
           fmt= ['%i', '%.2f', '%s'], ## <== 1st column, int, 2nd float, 3rd string
           delimiter = ',')

一切正常。 但是当数据是:

data = np.array([[1.111, 2.222, 'three'],
                 [4.444, 5.555, 'six'],
                 [7.777, 8.888, 'nine'] ])

np.savetxt('data.txt', data, 
           fmt= ['%i', '%.2f', '%s'], ## <== 1st column, int, 2nd float, 3rd string
           delimiter = ',')

它给了我一个错误: fh.write(asbytes(格式 % 元组(行) + 换行符)) 类型错误:%d 格式:需要数字,而不是 numpy.string_

有人有线索吗?


查看您创建的数组,它看起来像这样:

array([['1.111', '2.222', 'three'],
   ['4.444', '5.555', 'six'],
   ['7.777', '8.888', 'nine']], 
  dtype='<U5')

正如您所看到的,所有元素都是字符串,这就是您收到该错误的原因。 但是,如果你这样做,它应该会起作用。

dt = np.dtype("f, f, U5")
data = np.array([(1.111, 2.222, 'three'), # notice that each row had to be a tuple in my case
             (4.444, 5.555, 'six'),
             (7.777, 8.888, 'nine')], dtype=dt)
np.savetxt('data.txt', data, 
           fmt= ['%i', '%.2f', '%s'], ## <== 1st column, int, 2nd float, 3rd string
           delimiter = ',')

有关 dtypes 的更多信息如下:数据类型对象 http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:Numpy Data IO,如何为每列按不同的数据类型保存数据? 的相关文章

随机推荐