gpt4 book ai didi

python-3.x - 从具有不同分隔符的结构化 numpy 数组写入行

转载 作者:行者123 更新时间:2023-12-01 02:34:34 27 4
gpt4 key购买 nike

我有一些数据存储在结构化的 numpy 数组中,我想将其写入文件。因为我正在生成一些代码来匹配现有的输出格式,该输出格式导出了一个视觉上更令人愉悦的表格,所以我需要使用不同的空白分隔符输出此数据。

使用一个基本示例:

import numpy as np

x = np.zeros((2,),dtype=('i4,f4,a10'))
x[:] = [(1,2.,'Hello'),(2,3.,'World')]

期望输出:

1 2.00    Hello
2 3.00 World

现在,我知道我可以做到:

for row in x:
print('%i %.2f %s' % (row[0], row[1], row[2]))

这很好用,但如果你有很多列,它似乎过于冗长。现在我的输出中有 8 个。

我是 Python 的新手(来自 MATLAB),是否有更通用的语句可用于“汇总”所有列?我在想一些类似 print('%i %.2f %s' % val for val in row) 的东西,但这只会打印 2 个生成器。当我在使用 re.split 时遇到生成器时,我可以使用 list() 来获得我想要的输出,但我不认为使用类似的东西,比如说,对于这种情况,str() 可以满足我的要求。

最佳答案

如果将 row 包装在 tuple 中,则不必列出所有元素。 % 格式采用元组row 可能显示为 tuple 但它实际上是一个 numpy.void

for row in x:
print('%i %.2f %s'%tuple(row))

像这样在循环中打印或写入行是完全正常的 Python。

__str__ 方法通常写成这样:

astr=['a header line']
for row in x:
astr.append('%i %.2f %s'%tuple(row))
astr='\n'.join(astr)

生成一串连接线。

理解等价物可以是:

'\n'.join('%i %.2f   %s'%tuple(row) for row in x)

由于您使用的是 Python3,因此您也可以使用 .format 方法,但我怀疑 % 样式更接近您在 MATLAB 中使用的样式。

关于python-3.x - 从具有不同分隔符的结构化 numpy 数组写入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27490549/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com