2015-04-06 66 views
0

我想序列充满了复数的ndarray /列表中的数组/列表/垫,示例代码是在这里:如何序列充满复数

a = [None] 
a[0] = 0.006863076166054825+0j 
a 
[(0.006863076166054825+0j)] 
>>> b = json.dumps(a) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "D:\Python27\lib\json\__init__.py", line 243, in dumps 
    return _default_encoder.encode(obj) 
    File "D:\Python27\lib\json\encoder.py", line 207, in encode 
    chunks = self.iterencode(o, _one_shot=True) 
    File "D:\Python27\lib\json\encoder.py", line 270, in iterencode 
    return _iterencode(o, 0) 
    File "D:\Python27\lib\json\encoder.py", line 184, in default 
    raise TypeError(repr(o) + " is not JSON serializable") 
TypeError: (0.006863076166054825+0j) is not JSON serializable 

所以如何处理这个问题?

回答

0

json.dumps(a)将失败,因为函数在尝试解释复数时无法处理。传递价值的唯一可能性是字符串:

a = [1] 
a[0] = "0.006863076166054825+0j" 
b = json.dumps(a) 
print b 

其输出

["0.006863076166054825+0j"] 
0

OK让我说清楚

我找到了另一种方式来做到这一点。 使用模块咸菜

例如:

fp = open("1.txt","w") 
a = [1,2,3] 
pickle.dump(a,fp,0) 
fp.close() 

加载是相同的:

fp = open("1.txt") 
a = pickle.load(fp) 
print a 
fp.close() 

它可以,只要它可以找到该类序列的任何对象