我在numpy.array[]
中存储了一些元素。我希望将它们存储在“.txt”文件中。情况是它需要符合一定的标准,这意味着每个元素需要在文件中存储 x 行。
示例:
numpy.array[0]
需要从第 1 行第 26 列开始。
numpy.array[1]
需要从第 1 行第 34 列开始。
我使用numpy.savetxt()
将数组保存到文件。
稍后我将在循环中实现此操作,以创建一个带有坐标的大型“.txt”文件。
编辑:下面提供了这个很好的例子,它确实指出了我的挣扎:
In [117]: np.savetxt('test.txt',A.T,'%20d %10d')
In [118]: cat test.txt
0 6
1 7
2 8
3 9
4 10
5 11
fmt 选项“%20d %10d”为您提供取决于最后一个整数的间距。我需要的是一个选项,它可以让我设置距左侧的间距,而不管其他整数如何。
模板需要将整数放入: XXXXXXX.XXX YYYYYYY.YYY ZZZZ.ZZZ
<小时/>最终编辑:
我通过创建一个测试来解决这个问题,该测试检查最后一个 float 使用了多少个空格。然后我就能够预测下一个 float 适合模板所需的空格数。
最佳答案
你玩过np.savetxt
的fmt
吗?
让我用一个具体的例子来说明(您应该给我们的那种)
创建一个 2 行数组:
In [111]: A=np.arange((12)).reshape(2,6)
In [112]: A
Out[112]:
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])
保存,得到2行6列
In [113]: np.savetxt('test.txt',A,'%d')
In [114]: cat test.txt
0 1 2 3 4 5
6 7 8 9 10 11
保存其转置,得到6行2列
In [115]: np.savetxt('test.txt',A.T,'%d')
In [116]: cat test.txt
0 6
1 7
2 8
3 9
4 10
5 11
将更多详细信息放入 fmt
中以分隔列
In [117]: np.savetxt('test.txt',A.T,'%20d %10d')
In [118]: cat test.txt
0 6
1 7
2 8
3 9
4 10
5 11
我认为你可以弄清楚如何制作一个 fmt
字符串,将你的数字放入正确的列中(加入 26 个空格等,或使用左右对齐 - 常见的 Python 格式问题)。
savetxt
还接受一个打开的文件。因此,您可以打开一个文件进行写入,写入一个数组,添加一些填充行,然后写入另一个数组。另外,savetxt
并没有做任何花哨的事情。它只是遍历数组的行,并将每一行写入一行,例如
for row in A:
file.write(fmt % tuple(row))
因此,如果您不喜欢 savetxt
为您提供的控制功能,请直接写入文件。
关于python - 使用 numpy Python 创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35010264/