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