我有一个矩阵分解过程,我正在picloud上运行。输出是一组numpy数组(ndarray)。
现在,我想将它保存到我的桶中,但我无法以正确的方式进行操作。我们假设要保存的数组是P.
我试过了:
cloud.bucket.putf(P,'p.csv')
但是返回了一个错误:“IOError:文件对象不可搜索。无法传输”。
我试过
numpy.ndarray.tofile(P,f, sep=",", format="%s") #outputing the array to a file object f
cloud.bucket.putf(f,'p.csv') #saving the file object f in the bucket.
我尝试了其他一些东西,包括使用numpy.savetext(就像我在本地运行它一样)但是我无法在picloud文档和stackexchange问题之间解决这个问题。不过,我还没有尝试过泡菜。我觉得这很简单,但在这花了几个小时之后,我感觉很傻。
答案 0 :(得分:2)
正如您所猜测的那样,您希望按如下方式挑选数组:
import cloud
import cPickle as pickle
# to write
cloud.bucket.putf(pickle.dumps(P), 'p.csv')
# to read
obj = pickle.loads(cloud.bucket.getf('p.csv').read())
这是在PiCloud Bucket中序列化和存储任何Python对象的一般方法。我还建议您将csv文件存储在前缀下以保持其有序[1]。
[1] http://docs.picloud.com/bucket.html#namespacing-with-prefix