我有一个形式为numpy数组
a = [1,2,3]
我想将其保存到一个 .txt 文件中,使文件看起来像:
1 2 3
如果我使用numpy.savetxt,那么我得到的文件将会是这样的:1
2
3
我想这应该有一个简单的解决方案,有什么建议吗?
如果numpy >= 1.5
,你可以这样做:
# 注意文件名要用双引号括起来,
# 比如 "filename.txt"
numpy.savetxt("filename", a, newline=" ")
编辑
几个长度相同的一维数组
a = numpy.array([1,2,3])
b = numpy.array([4,5,6])
numpy.savetxt(filename, (a,b), fmt="%d")
# gives:
# 1 2 3
# 4 5 6
多个长度可变的一维数组
a = numpy.array([1,2,3])
b = numpy.array([4,5])
with open(filename,"w") as f:
f.write("\n".join(" ".join(map(str, x)) for x in (a,b)))
# gives:
# 1 2 3
# 4 5
numpy.savetxt(filename,(a,b,c))
。它会按行保存。但是它们应该具有相同的大小。 - Avarissavetxt
并不能太有帮助。虽然做到是可能的,但会变得更加丑陋,并且失去本意。就像BioGeek建议的那样,用循环正常地写出它们。我会在我的回答中编辑包括所有这些替代方案。 - Avarisnewline=" "
会导致一个尾随分隔符(空格),而一些程序不接受这种方式(必须严格在打印结束时有一个新行,而不是一个空格和一个新行)。 - Serge Rogatch另一种答案是将数组重新塑形,使其具有维度(1, N)
,如下所示:
savetext(filename, a.reshape(1, a.shape[0]))
import numpy
a = numpy.array([1,2,3])
with open(r'test.txt', 'w') as f:
f.write(" ".join(map(str, a)))
numpy.savetxt(filename, [a], delimiter='\t')
我知道这个问题很旧了,但是这些答案都没有解决numpy不能按行保存数组的根本问题。我发现这个一行代码对我很有用:
b = np.matrix(a)
np.savetxt("file", b)
import numpy as np
a = [1,2,3]
b = np.array(a).reshape((1,3))
np.savetxt('a.txt',b,fmt='%d')
[1,2,3]
列表就像一列。
1
2
3
[[1, 2, 3]] ---> 1, 2, 3
并且
[[1, 2, 3], [4, 5, 6]] ---> 1, 2, 3
4, 5, 6
np.savetxt("file", [['r1c1', 'r1c2'], ['r2c1', 'r2c2']], delimiter=';', fmt='%s')
numpy.savetxt()
方法有几个值得注意的参数:
fmt:str 或 str 序列,可选
用于格式化数组中的数字,详见文档delimiter:str,可选
分隔列的字符串或字符newline:str,可选
分隔行的字符串或字符。
让我们举个例子。我有一个大小为 (M, N)
的数组,其中包含范围在 (0, 255) 内的整数。为了按行保存数组并漂亮地显示它,我们可以使用以下代码:
import numpy as np
np.savetxt("my_array.txt", my_array, fmt="%4d", delimiter=",", newline="\n")
只是
' '.join(a)
TypeError: sequence item 0: expected string, numpy.int32 found
的错误。请注意不要改变原意。 - BioGeek