试图从一个 np 数组中创建一个可读的 txt 文件,全部打印在一行上?
Posted
技术标签:
【中文标题】试图从一个 np 数组中创建一个可读的 txt 文件,全部打印在一行上?【英文标题】:Trying to make a readable txt file from an np array, all printing on one line? 【发布时间】:2015-07-23 04:32:18 【问题描述】:我在这里搜索了各种问题,但无法找到适当的解决方案来解决如何将我的数组保存为在文本文件中可读。我有一个形状为 (13,5) 的 numpy 数组,其中包含字符串。当我使用 np.savetxt 时,它全部打印在一行上。
更多数组信息:类型:“numpy.ndarray”类,条目类型:“numpy.str_”类。
这是我用来打印数组的行:
np.savetxt('file_name.txt', array_name, fmt="%s")
为什么打印在一行上?我怎样才能让它以一种易于阅读的方式打印(不是全部在一行上)?
array_name=np.array(
[['Champion' 'Wins' 'Plays' 'Win %' 'Popularity'],
['Ahri' '17' '25' '68.0' '1.25'],
['Akali' '4' '7' '57.14' '0.35'],
['Alistar' '28' '56' '50.0' '2.8'],
['Amumu' '3' '4' '75.0' '0.2'],
['Anivia' '5' '6' '83.33' '0.3'],
['Annie' '1' '9' '11.11' '0.45'],
['Ashe' '7' '11' '63.64' '0.55'],
['Azir' '16' '28' '57.14' '1.4'],
['Bard' '19' '34' '55.88' '1.7'],
['Blitzcrank' '9' '16' '56.25' '0.8'],
['Brand' '0' '1' '0.0' '0.05'],
['Braum' '5' '16' '31.25' '0.8']])
【问题讨论】:
你能提供你想要的示例输出吗?什么对你来说容易阅读? 能否提供更多代码。比如数组里有什么? 从交互式会话中复制粘贴会有所帮助 - 我希望看到array_name.shape
、array_name.dtype
和 repr(array_name)
的一部分。也许还有来自文件的剪辑。我能想到 1line 的唯一原因是 (1,n)
形状。或者可能 n/l 没有在您的显示器上注册。
另一个问题***.com/questions/31599284 表明使用Windows notepad
查看文件可能是问题所在。
【参考方案1】:
好的,既然您已经提供了一个示例数组,就很容易理解为什么会得到您所描述的结果:您没有用逗号分隔每行中应该是不同的字符串。 Python 连接相邻的字符串文字:
>>> 'a' 'b' 'c'
'abc'
因此您的数组有 1 列,而不是 5:
>>> array_name.shape
(13, 1)
>>> array_name[0, 0]
'ChampionWinsPlaysWin %Popularity'
>>> array_name[0, 1]
IndexError Traceback...
...
IndexError: index 1 is out of bounds for axis 1 with size 1
【讨论】:
【参考方案2】:是的,需要更多信息——我无法重现您所描述的内容。运行后:
import numpy as np
ra = np.array([['Here', 'is', 'my'],
['array', 'of', 'strings']])
np.savetxt('temp.txt', ra, fmt="%s")
文件temp.txt
包含:
Here is my
array of strings
每行一行,每行以'\n'
结尾,每行中的项目用空格分隔。
【讨论】:
这是我想要的,但由于某种原因,我的没有这样做。以上是关于试图从一个 np 数组中创建一个可读的 txt 文件,全部打印在一行上?的主要内容,如果未能解决你的问题,请参考以下文章
如何以不同的方式格式化不同的文本行,从在 AS3 中创建的文本字段,从 txt 文件填充文本?