Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将带有名称和numpy数组数据的字典写入文本文件问题_Python_Arrays_Numpy_Dictionary - Fatal编程技术网

Python 将带有名称和numpy数组数据的字典写入文本文件问题

Python 将带有名称和numpy数组数据的字典写入文本文件问题,python,arrays,numpy,dictionary,Python,Arrays,Numpy,Dictionary,我是python的新手,正在编写一些项目。我需要以字典格式{name:numpy array}(而不仅仅是一个字典)保存一些数据,将其保存到文本文件中,然后从该文件中读取。 为此,我使用np.savetxt import numpy as np from DIP import dip name = 'name' val = dip() #just some function to make an array dict = {name : val} #create a d

我是python的新手,正在编写一些项目。我需要以字典格式{name:numpy array}(而不仅仅是一个字典)保存一些数据,将其保存到文本文件中,然后从该文件中读取。 为此,我使用np.savetxt

import numpy as np

from DIP import dip

name = 'name'
val = dip()          #just some function to make an array

dict = {name : val}  #create a dictionary
np.savetxt('text.txt', dict)
但是当我运行代码时,我有这个错误

File "D:\python3.4\lib\site-packages\numpy\lib\npyio.py", line 1116, in savetxt
ncol = X.shape[1]
IndexError: tuple index out of range
这是什么意思?或者我不能用np数组做这样的事情?我感谢任何帮助和建议。多谢各位

编辑。Pickle工作得很好,但它是一种可以保留所有存储数据而不覆盖txt的方法吗?因为当我从一开始(比如说第二天)运行我的程序时,所有的数据都被覆盖了。我需要保留数据库中的所有数据,以便将来存储样本。谢谢

因为您无法保存词典。要保存字典,可以使用
pickle

正在
pickle
文件中加载字典

In [1]: pickle_obj = open("dicts.pickle","wb")
In [2]:print dict 
{'name': matrix([[1],
        [2]])}
In [3]: pickle.dump(dict, pickle_obj)
In [4]: pickle_obj.close()
从pickle文件读取

In [5]: pickle_obj = open("dicts.pickle", "rb")
In [6]: dict = pickle.load(pickle_obj)
In [7]: pickle_obj.close()
In [8]:print dict 
{'name': matrix([[1],
        [2]])}

我认为您只保存
numpy.array
而不保存字典。请阅读
savetxt
文档。它编写了一个简单的
csv
格式-固定大小列的行,一个2d数组作为一个表。请更具体地说明所需的格式。你打算怎么读呢?我用了pickle,但没有名字和数组,我只有这样的东西:名称:qcnumpy.core.multiarray“重建qcnumpy ndarray qK…qCbq”-qRq(KM@…qcnumpy dtype q X f8q K K‡qRq(KX 5U–DΈX§”?ΖoΏΉΒΕN,γΧ?HK2–s∏ς7¥?ώΪf²?pickle不保存文本。您也可以使用pickle加载它。哦,我明白了。这非常有用,感谢您的快速响应:)。这是“附加”的一种方式吗我的文件写入多个字典?使其成为某种数据库…?@Eloah如果这个答案有用,请接受它。如果你想添加更多。将其作为一个单独的一个并添加到其中。这是一种创建txt并在每次运行代码时将数据放入其中而不覆盖它的方法吗??