Python 如何将Numpy数组输出到Picloud的文件对象

Python 如何将Numpy数组输出到Picloud的文件对象,python,numpy,cloud,Python,Numpy,Cloud,我在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.

我在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之间的问题。不过我还没试过泡菜。我觉得这很简单,但在花了几个小时之后,我觉得自己很傻。

正如您所猜测的,您希望按如下方式对数组进行pickle处理:

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]

如何打开
f
(读写、仅写…)?在尝试
cloud.bucket.putf
之前,您还应该关闭并重新打开它,或者使用带有文件名的
cloud.bucket.put
。实际上,我正试图将数组P转换为文件对象f,因为
cloud.bucket.put
的文档需要一个文件对象作为输入。谢谢!我已经这样做了,我想我已经解决了我的测试用例。现在进行更大的练习。非常感谢。是的,我会使用前缀,这是一个很好的建议。