如何從Python創建Matlab數據集?

2024-10-05 10:17:04 发布

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

我有几个图形实例,并使用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,但没有成功。所以也许有一种更“手动”的方法?你知道吗


Tags: 文件实例namenetworkx图形字典节点顺序
1条回答
网友
1楼 · 发布于 2024-10-05 10:17:04

好吧,我已经做到了,这就是我带来的。你知道吗

首先,我创建了一个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

我想这会对我有用,我也希望对其他人有用。谢谢大家。你知道吗

相关问题 更多 >

    热门问题