用CSV文件读写NumPy数组字典

2024-06-01 21:12:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python2.7和networkx来绘制我的网络的spring布局图。我想把我在网络上的每一个位置都进行比较。听起来很简单,我的代码如下:

pos_spring = nx.spring_layout(H, pos=fixed_positions, fixed = fixed_nodes, k = 4, weight='passengers')

这条线计算我要存储的稍后用于打印的位置。字典(pos_spring)如下所示:

^{pr2}$

正在写入文件:

w = csv.writer(open("Mexico_spring_layout_positions_2.csv", "w"))
for key, val in pos_spring.items():
    w.writerow([key, val])

文件内容如下所示:

1536,[ 0.51060853  0.80129841]
1025,[ 0.47442269  0.99838177]
1030,[ 0.02952256  0.45073233]

正在读取文件:

with open('Mexico_spring_layout_positions_2.csv', mode='r') as infile:
    reader = csv.reader(infile)
    pos_spring = dict((rows[0],rows[1]) for rows in reader)

现在pos\u spring的内容如下所示:

{'2652': '[ 0.78480322  0.103894  ]', 
'1260': '[ 0.8834103   0.82542163]', 
'2969': '[ 0.33044548  0.31282113]',

不知何故,这些数据看起来与存储在csv文件中的原始字典不同。在写入和/或读取数据以修复此问题时,需要更改哪些内容?提前谢谢。在

谨致问候, 弗兰克


Tags: 文件csvpos网络内容for字典open
1条回答
网友
1楼 · 发布于 2024-06-01 21:12:19

您不能在CSV文件中存储NumPy数组并维护数据类型。记住,CSV文件只能存储文本。您看到的是NumPy数组的文本表示。在

相反,您可以在写入csv文件时解压NumPy数组:

import csv

d = {1536: np.array([ 0.53892015,  0.984306  ]), 
     1025: np.array([ 0.12096853,  0.82587976]), 
     1030: np.array([ 0.20388712,  0.7046137 ])}

fp = r'C:\temp\out.csv'

with open(fp, 'w', newline='') as fout:
    w = csv.writer(fout)
    for key, val in d.items():
        w.writerow([key, *val])

当你回过头来读的时候再转换回NumPy。对于此步骤,您可以使用字典理解:

^{pr2}$

相关问题 更多 >