如何获取python';s np.savetxt是否将循环的每次迭代保存在不同的列中?

如何获取python';s np.savetxt是否将循环的每次迭代保存在不同的列中?,python,python-2.7,numpy,for-loop,Python,Python 2.7,Numpy,For Loop,这是一个非常基本的代码,做我想要的。。。除了关于文本文件的书写 import numpy as np f = open("..\myfile.txt", 'w') tst = np.random.random(5) tst2 = tst/3 for i in range(3): for j in range(5): test = np.random.random(5)+j a = np.random.normal(test, tst2) np.s

这是一个非常基本的代码,做我想要的。。。除了关于文本文件的书写

import numpy as np

f = open("..\myfile.txt", 'w')
tst = np.random.random(5)
tst2 = tst/3
for i in range(3):
    for j in range(5):
        test = np.random.random(5)+j
        a = np.random.normal(test, tst2)
    np.savetxt(f, np.transpose(a), fmt='%10.2f')
    print a
f.close()
此代码将向.txt文件写入一个列,该列在for循环的每次迭代后连接

我希望每个迭代都有独立的列。

如何做到这一点?

注意:我也使用了
np.c_[]
,如果我表示命令中的每个迭代,那么将写入列。例如:
np.c\a[0],a[1]
等等。问题是,如果我的
i
j
值都很大怎么办?遵循此方法是不合理的。

因此运行会产生:

2218:~/mypy$ python3 stack39114780.py 
[ 4.13312217  4.34823388  4.92073836  4.6214074   4.07212495]
[ 4.39911371  5.15256451  4.97868452  3.97355995  4.96236119]
[ 3.82737975  4.54634489  3.99827574  4.44644041  3.54771411]
2218:~/mypy$ cat myfile.txt
      4.13
      4.35
      4.92
      4.62
      4.07    # end of 1st iteration
      4.40
      5.15
      4.98
      3.97
      ....
你明白发生了什么事吗?对
savetxt
的一次调用将写入一组行。使用类似
a
的1d数组,它每行打印一个数字。(
转置(a)
没有任何作用)

文件写入是逐行完成的,不能为添加列而重写。因此,要创建多列,需要创建一个包含多列的数组。然后执行一个
savetxt
。换句话说,在写之前收集所有数据

将您的值收集到一个列表中,制作一个数组,然后将其写入

alist = []
for i in range(3):
    for j in range(5):
        test = np.random.random(5)+j
        a = np.random.normal(test, tst2)
        alist.append(a)
arr = np.array(alist)
print(arr)
np.savetxt('myfile.txt', arr, fmt='%10.2f')
我得到了15行5列,但你可以调整

2226:~/mypy$ cat myfile.txt
  0.74       0.60       0.29       0.74       0.62
  1.72       1.62       1.12       1.95       1.13
  2.19       2.55       2.72       2.33       2.65
  3.88       3.82       3.63       3.58       3.48
  4.59       4.16       4.05       4.26       4.39
由于
arr
现在是二维的,
np.transpose(arr)
做了一些有意义的事情——我会得到5行15列

==================


您为每个
i
写一次
a
——因此有3行。你扔掉了4次
j
迭代。在我的变体中,我收集所有
a
,因此得到15行。

演示最后一个
np.c.[]
位。有什么不合理的地方吗?在这个小示例所涉及的实际代码中,我有3个嵌套for循环,总共804次迭代,用我的小样本大小生成了一个包含17700行的.txt文件。随着样本量的增加,迭代需求也随之变化。这就是为什么它不合理。请更详细地解释所需的文件布局。有多少列,多少行?迭代与列或行之间的关系是什么?列的数量与迭代的数量有关,行的数量与源数据点的数量有关@hpaulj我喜欢下面您使用np.append特性的例子,但是我还没能让它工作。请参见[以获得所使用代码的更好示例。
for i in range(3):
    for j in range(5):
        test = np.random.random(5)+j
        a = np.random.normal(test, tst2)
    np.savetxt(f, np.transpose(a), fmt='%10.2f')