相关疑难解决方法(0)

保留磁盘上的numpy数组的最佳方法

我正在寻找一种快速保存大型numpy数组的方法.我想以二进制格式将它们保存到磁盘,然后相对快速地将它们读回内存.不幸的是,cPickle还不够快.

我找到了numpy.saveznumpy.load.但奇怪的是,numpy.load将npy文件加载到"memory-map"中.这意味着定期操作数组确实很慢.例如,像这样的东西会非常慢:

#!/usr/bin/python
import numpy as np;
import time; 
from tempfile import TemporaryFile

n = 10000000;

a = np.arange(n)
b = np.arange(n) * 10
c = np.arange(n) * -0.5

file = TemporaryFile()
np.savez(file,a = a, b = b, c = c);

file.seek(0)
t = time.time()
z = np.load(file)
print "loading time = ", time.time() - t

t = time.time()
aa = z['a']
bb = z['b']
cc = z['c']
print "assigning time = ", time.time() - t; …
Run Code Online (Sandbox Code Playgroud)

python numpy pickle binary-data preserve

116
推荐指数
6
解决办法
8万
查看次数

如何正确保存和加载numpy.array()数据?

我想知道,如何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我没有其他"后台"操作.只需保存和加载,这就是我得到的.先感谢您.

python arrays numpy

75
推荐指数
3
解决办法
15万
查看次数

在python中保存并加载Numpy Matrix

有人能举例说明如何在文件中保存二维矩阵并重新加载以供进一步使用吗?

python numpy file

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

numpy ×3

python ×3

arrays ×1

binary-data ×1

file ×1

pickle ×1

preserve ×1