繁体   English   中英

将值保存在列表列表中(Numpy)

[英]Saving values in a list of lists (Numpy)

我有一个列表列表,其中包含要保存以供以后使用的值。 将它们保存为CSV似乎很痛苦,所以首先我想将列表传输到数组中。

列表的名称为“模式”。 “模式”中的每个条目都包含代表该模式共振状态的值列表。 第一个坐标是实部,第二个坐标是虚部。

# The resonant states of the mode m = 1
In [178]: modes[1]
Out[178]: 
{0: array([ 1.12059699, -0.24524525]),
 1: array([ 2.71832424, -0.26526527]),
 2: array([ 4.28671194, -0.26526527]),
 3: array([ 5.87902919, -0.26526527]),
 4: array([ 7.44744745, -0.27266801]),
 5: array([ 9.02645242, -0.26526527]),
 6: array([ 10.61500625,  -0.28528529])}

大约有100个模式,每个模式包含50个坐标。 我想将这些点转移到具有元组的数组(模式,实部,成像部分)。 例如,以上部分将是:

array ([[ 1, 1.12059699, -0.24524525],
        [ 1, 2.71832424, -0.26526527],
        [ 1, 4.28671194, -0.26526527],
 etc....

该阵列将包含所有模式的所有谐振状态。 然后,我将采用此数组并将其存储到CSV中。 有人可以帮忙吗? 如果不建议这样做,我可以选择其他方式。

这样的事情应该起作用:

import numpy as np
temp = np.array(modes[0].values())
result = np.hstack( (np.zeros((temp.shape[0], 1)), temp) )
for i in range(1, len(modes)):
    temp = np.array(modes[i].values())
    result = np.vstack( (result, np.hstack((i * np.ones((temp.shape[0], 1)), temp))) )

尽管我应该提一下,我很快就将其组合在一起。 应该有更好的方式来写我现在不在想的东西。

CSV是具有嵌套数据的具有挑战性的格式。 如果您嵌套了numpy和本机Python数据结构,则更多。

如果必须读写CSV,则需要滚动自己的逻辑。 Numpy的savetxt不支持包含您在示例中显示的numpy数组的Python字典。

Python的pickle确实支持本机和numpy数据以及嵌套数据:

m={0:{
    0: np.array([ 1.12059699, -0.24524525]),
    1: np.array([ 2.71832424, -0.26526527]),
    2: np.array([ 4.28671194, -0.26526527])},
   1:{
    3: np.array([ 5.87902919, -0.26526527]),
    4: np.array([ 7.44744745, -0.27266801]),
    5: np.array([ 9.02645242, -0.26526527]),
    6: np.array([ 10.61500625,  -0.28528529])}
    }

给定该数据结构,您可以将其另存为腌制文件,从而:

with open(fn, 'w') as fout:
    fout.write(pickle.dumps(m))

并读回:

with open(fn) as fin:
    mr=pickle.loads(fin.read())    
print mr

印刷品:

{0: {0: array([ 1.12059699, -0.24524525]), 1: array([ 2.71832424, -0.26526527]), 2: array([ 4.28671194, -0.26526527])}, 1: {3: array([ 5.87902919, -0.26526527]), 4: array([ 7.44744745, -0.27266801]), 5: array([ 9.02645242, -0.26526527]), 6: array([ 10.61500625,  -0.28528529])}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM