Python numpy.savetxt是否保存新行中的每个元素?

Python numpy.savetxt是否保存新行中的每个元素?,python,arrays,numpy,Python,Arrays,Numpy,我使用上述语法在一个文本文件中存储大约10000个数组,但我注意到所有元素都存储在不同的行中 如果我使用numpy.loadtxt加载文本文件,我将得到一个数组而不是一个矩阵 我知道可以对加载的数组使用numpy.reformate将其转换为矩阵,但在我的应用程序中,加载它的用户不知道行数 如何解决这个问题?如果您给np.savetxt一个一维数组,它会将所述数组视为一列,并将每个条目写在新行上。我可以想出两种方法来解决这个问题。第一种方法是向数组中添加一个新轴,使其成为行向量: with fi

我使用上述语法在一个文本文件中存储大约10000个数组,但我注意到所有元素都存储在不同的行中

如果我使用
numpy.loadtxt
加载文本文件,我将得到一个数组而不是一个矩阵

我知道可以对加载的数组使用
numpy.reformate
将其转换为矩阵,但在我的应用程序中,加载它的用户不知道行数


如何解决这个问题?

如果您给
np.savetxt
一个一维数组,它会将所述数组视为一列,并将每个条目写在新行上。我可以想出两种方法来解决这个问题。第一种方法是向数组中添加一个新轴,使其成为行向量:

with file("features.txt", "w") as outfile:
    # temp_array is an array of shape (500L,)
    np.savetxt(outfile, X=np.array(temp_array, dtype='uint8'), delimiter=",")
第二种方法是告诉
np.savetxt
对换行符使用不同于
\n
的字符。例如,空间:

x = np.arange(5)
np.savetxt('test.txt', x[np.newaxis], fmt='%d', delimiter=',')
这两种方法都会生成一个类似

np.savetxt('test.txt', x, fmt='%d', newline=' ', delimiter=',')

查看
savetxt
的代码。这并不复杂。由于您要自己打开文件,
savetxt
的关键部分是:

0 1 2 3 4
换言之,它是以你的数组为对象,稍微调整它的形状——如果需要的话——然后一行一行地写它

fmt
是按列数复制的输入参数:

for row in X:
    fh.write(asbytes(format % tuple(row) + newline))
如果您对
savetxt
为您所做的工作不满意,请尝试自己复制这篇文章

如果
temp_array
已经是一个数组,那么什么是:

fmt = [fmt, ] * ncol
应该为你做什么?为什么是
X=
部分


您是否使用该剪辑将多个数组写入文件?我可以理解在追加模式下重复打开文件,或者用一个打开的文件执行多个
savetxt

我发现的最简单的解决方案是制作一个包含数据的二维数组:

X=np.array(temp_array, dtype='uint8')
np.savetxt(output_file, [[ts, serial, self.__class__.__name__, data]], '%s', delimiter=',')