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

Python 在列表列表中保存值(Numpy),python,arrays,list,csv,numpy,Python,Arrays,List,Csv,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.26

我有一个列表,其中包含我想保存以供以后使用的值。将它们保存到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个坐标。我想把这些点转移到一个带有元组的数组中,比如mode,real部分,imag部分。例如,上述部分将是:

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 dict

Python确实支持本机和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])}
    }
给定该数据结构,可以将其保存为pickle文件,如下所示:

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])}}

您的第一个数据结构似乎是numpy数组的dict。由于您使用模式[1]访问该元素,因此可能会有这些dict的列表或dict。所以我假设你实际上有一个numpy数组的dict列表,对吗?如何确定1的位置等等。。来自,输出中的元组在哪里?听起来不错,老兄。@PadraicCunningham 1将来自我,寻找模式m=1的所有共振状态。它可以是任何整数。@PadraicCunningham正确吗