我有几个图形实例,我使用networkx测量了Python中的功能,如密度,顺序,大小,节点度等。现在,我想创建一个文件,其中保存每个实例的特征向量,因此我可以将其加载到matlab中,类似于:
load hald
为了处理它。
这是一个实例的特征向量的python字典:
{'orden': 100, 'name': 'random_P1_N100_I1', 'density': 0.1006060606060606, 'diameter': 4, 'radius': 3, 'size': 498}
我有几个特征向量,现在我想将它们放入.mat文件中,以便在Matlab中分析数据。
我尝试了scipy.io.savemat
,但没有成功。那么也许存在一种更“手动”的方式呢?
答案 0 :(得分:0)
好吧,我已经设法做到了,这就是我带来的。
首先,我创建了一个python字典,其中的功能名称为键,空列表为值。
WholeDict = {'name':list(), 'order':list(), 'size':list(), 'density':list(), 'diameter':list(), 'radius':list(), 'nodesEccentricity':list()}
然后,我测量实例的功能,并将每个功能值附加到字典中的相应功能键。我为每个实例都这样做。 当这个过程结束时,我有一个字典,每个项目都是一个列表,表示跨实例的测量特征的值。
WholeDict['name'].append(instanceName)
WholeDict['order'].append(order)
WholeDict['size'].append(size)
WholeDict['density'].append(density)
WholeDict['diameter'].append(diameter)
WholeDict['radius'].append(radius)
WholeDict['nodesEccentricity'].append(nodesEccentricity.items())
测量了三个不同的实例后,python字典就有了这个内容:
{'diameter': [2, 3, 3], 'name': ['c3c3', 'c3c4', 'c3c5'], 'density': [0.5, 0.36363636363636365, 0.2857142857142857], 'nodesEccentricity': [[(1, 2), (2, 2), (3, 2), (4, 2), (5, 2), (6, 2), (7, 2), (8, 2), (9, 2)], [(1, 3), (2, 3), (3, 3), (4, 3), (5, 3), (6, 3), (7, 3), (8, 3), (9, 3), (10, 3), (11, 3), (12, 3)], [(1, 3), (2, 3), (3, 3), (4, 3), (5, 3), (6, 3), (7, 3), (8, 3), (9, 3), (10, 3), (11, 3), (12, 3), (13, 3), (14, 3), (15, 3)]], 'radius': [2, 3, 3], 'order': [9, 12, 15], 'size': [18, 24, 30]}
令人高兴的是,它甚至可以使用值列表的功能,例如节点偏心率。所以我可以用它保存它:
sio.savemat('aMatFile', {'featureSet':WholeDict})
然后在Matlab中打开它:
load aMatFile
在Matlab中,字典变成了一个名为featureSet
的结构,如下所示:
>> featureSet
featureSet =
diameter: [2 3 3]
name: [3x4 char]
density: [0.5 0.363636363636364 0.285714285714286]
nodesEccentricity: {[9x2 int64] [12x2 int64] [15x2 int64]}
radius: [2 3 3]
order: [9 12 15]
size: [18 24 30]
功能值可以访问为:
>> featureSet.name
ans =
c3c3
c3c4
c3c5
如果我想看到实例c3c3的节点偏心:
featureSet.nodesEccentricity{1}
ans =
1 2
2 2
3 2
4 2
5 2
6 2
7 2
8 2
9 2
我认为这对我有用,我希望它对其他人也有用。谢谢大家。