我有一个结构数组,其形式为
output = np.zeros(names.size, dtype=[('name', 'U32'), ('r', float),('m',float)])然后,我尝试使用np.savetxt将其保存到csv文件中。我想知道是否有方法可以将每一列的标签保存为csv文件的标题?
提前谢谢你。
发布于 2018-11-13 19:52:46
您可以尝试使用类似于this SO answer的解决方案来透视数据
dtypes = [('name', 'U32'), ('r', float),('m',float)]
a = np.zeros(5, dtype=dtypes)
b = numpy.vstack(map(list, a))将list映射到recarray元组上,然后垂直堆叠它们。
然后,您可以执行以下操作...
names = [n for n, t in dtypes]
numpy.savetxt('test.csv', b, header=','.join(names), fmt=','.join(['%s']*b.shape[1]))发布于 2018-06-26 00:03:01
以下是示例代码:
output = np.zeros(names.size, dtype=[('name', 'U32'), ('r', float),('m',float)])
np.savetxt("foo.csv", output, delimiter=",", header="name,r,m", fmt="%s,%f,%f", comments='')发布于 2020-04-19 22:49:30
我发现自己经常在这个问题上苦苦挣扎,所以我写了一个函数,它生成一个标题和格式化字符串,用于np.savetxt:
你可以在GitHub Gist上找到代码。
我没有对它进行过广泛的测试,但它可以处理大多数数据类型,并自动生成(可选的)填充输出。输出的格式很好,人类可读,支持拖放到excel中,也可以很容易地读回其中的字段名称和数据类型自动检测(主要)。
示例输出:
# x y1 y2 bools verylongnamewithshortcontent bytes objects
0 -25 3.9e+03 1 a b'AvvOkBhFJZIUQsxdg' {'key1': 12423, 'key2': 'asdfjkl;'}
1 255 8e+03 1 a b'SxKvotv' {'key1': 12423, 'key2': 'asdfjkl;'}
2 -211 2.5e+03 0 a b'tvBQXgqqS' {'key1': 12423, 'key2': 'asdfjkl;'}
3 -830 5.7e+02 1 a b'NCFrZHfniaZjeUg' {'key1': 12423, 'key2': 'asdfjkl;'}
4 -3468 8.7e+03 0 a b'RxzuvyKCxKBsz' {'key1': 12423, 'key2': 'asdfjkl;'}
5 4644 2.2e+03 1 a b'yHijSVfCv' {'key1': 12423, 'key2': 'asdfjkl;'}
6 27946 4e+03 0 a b'ywyZeQICJrY' {'key1': 12423, 'key2': 'asdfjkl;'}
7 313770 3.2e+03 1 a b'HBEufqJuASVxHRIxpjd' {'key1': 12423, 'key2': 'asdfjkl;'}
8 -76304 7.7e+02 0 a b'UX' {'key1': 12423, 'key2': 'asdfjkl;'}
9 427810 8.4e+03 0 a b'jmnOEWCvTWg' {'key1': 12423, 'key2': 'asdfjkl;'}输入/输出数据类型:
[('x', '<i4'), ('y1', '<i4'), ('y2', '<f8'), ('bools', '?'), ('verylongnamewithshortcontent', '<U7'), ('bytes', 'S20'), ('objects', 'O')]
[('x', '<i4'), ('y1', '<i4'), ('y2', '<f8'), ('bools', '<i4'), ('verylongnamewithshortcontent', '<U1'), ('bytes', '<U22'), ('objects', '<U35')]https://stackoverflow.com/questions/51027447
复制相似问题