我想知道,如何numpy.array正确保存和加载数据.目前我正在使用该numpy.savetxt()方法.例如,如果我有一个数组markers,看起来像这样:

我尝试通过以下方式保存它:
numpy.savetxt('markers.txt', markers)
Run Code Online (Sandbox Code Playgroud)
在其他脚本中,我尝试打开以前保存的文件:
markers = np.fromfile("markers.txt")
Run Code Online (Sandbox Code Playgroud)
这就是我得到的......

保存的数据首先如下所示:
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
0.000000000000000000e+00
Run Code Online (Sandbox Code Playgroud)
但是当我通过使用相同的方法保存刚加载的数据时,即.numpy.savetxt()它看起来像这样:
1.398043286095131769e-76
1.398043286095288860e-76
1.396426376485745879e-76
1.398043286055061908e-76
1.398043286095288860e-76
1.182950697433698368e-76
1.398043275797188953e-76
1.398043286095288860e-76
1.210894289234927752e-99
1.398040649781712473e-76
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?PS我没有其他"后台"操作.只需保存和加载,这就是我得到的.先感谢您.
我正在研究不同形状的数组,我想将它们全部保存起来numpy.save,所以,请考虑一下
mat1 = numpy.arange(8).reshape(4, 2)
mat2 = numpy.arange(9).reshape(2, 3)
numpy.save('mat.npy', numpy.array([mat1, mat2]))
Run Code Online (Sandbox Code Playgroud)
有用.但是当我有两个尺寸相同的矩阵时,它就不起作用了.
mat1 = numpy.arange(8).reshape(2, 4)
mat2 = numpy.arange(10).reshape(2, 5)
numpy.save('mat.npy', numpy.array([mat1, mat2]))
Run Code Online (Sandbox Code Playgroud)
它导致
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: could not broadcast input array from shape (2,4) into shape (2)
并注意问题引起的numpy.array([mat1, mat2])而不是由numpy.save
我知道这样的阵列是可能的:
>> numpy.array([[[1, 2]], [[1, 2], [3, 4]]])
array([[[1, 2]], [[1, 2], [3, 4]]], dtype=object)
因此,所有我想要的是两个数组保存为mat1和mat2一次.