首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带标头的np.savetxt保存结构化数字数组

使用带标头的np.savetxt保存结构化数字数组
EN

Stack Overflow用户
提问于 2018-06-25 23:51:50
回答 3查看 4.5K关注 0票数 4

我有一个结构数组,其形式为

代码语言:javascript
复制
output = np.zeros(names.size, dtype=[('name', 'U32'), ('r', float),('m',float)])

然后,我尝试使用np.savetxt将其保存到csv文件中。我想知道是否有方法可以将每一列的标签保存为csv文件的标题?

提前谢谢你。

EN

回答 3

Stack Overflow用户

发布于 2018-11-13 19:52:46

您可以尝试使用类似于this SO answer的解决方案来透视数据

代码语言:javascript
复制
dtypes = [('name', 'U32'), ('r', float),('m',float)]
a = np.zeros(5, dtype=dtypes)
b = numpy.vstack(map(list, a))

将list映射到recarray元组上,然后垂直堆叠它们。

然后,您可以执行以下操作...

代码语言:javascript
复制
names = [n for n, t in dtypes]
numpy.savetxt('test.csv', b, header=','.join(names), fmt=','.join(['%s']*b.shape[1]))
票数 1
EN

Stack Overflow用户

发布于 2018-06-26 00:03:01

以下是示例代码:

代码语言:javascript
复制
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='')

作为documented here

票数 0
EN

Stack Overflow用户

发布于 2020-04-19 22:49:30

我发现自己经常在这个问题上苦苦挣扎,所以我写了一个函数,它生成一个标题和格式化字符串,用于np.savetxt

你可以在GitHub Gist上找到代码。

我没有对它进行过广泛的测试,但它可以处理大多数数据类型,并自动生成(可选的)填充输出。输出的格式很好,人类可读,支持拖放到excel中,也可以很容易地读回其中的字段名称和数据类型自动检测(主要)。

示例输出:

代码语言:javascript
复制
# 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;'}

输入/输出数据类型:

代码语言:javascript
复制
[('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')]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51027447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档