在python中创建空动态数组以附加其他数组

时间:2016-09-20 15:00:24

标签: python arrays list numpy

我正在尝试计算python中数据集中某个分割的信息增益,作为ID3算法实现的一部分。

原始数据集/空间是2D数组。我想我会创建一个新的3D数组,它将包含原始空间的分区,这样我就可以在完成分区时计算每个数组的熵。但我是python的新手,我无法弄清楚如何创建一个空的动态数组(列表?),我可以附加其他2D数组。

这就是我现在所拥有的,我已经尝试了多种声明分区[]的变体,并附加到它,包括使用numpy数组,但我无法弄清楚正确的语法或者它是否正确甚至可能:

def InformationGain(space, splitIndex, numPossibleValues=2):
    info = 0
    partitions = []
    for i in range (0, numPossibleValues-1):
        partitions.append([])

    #split into partitions
    for i in range (0,len(space)):
        partitions[space[i][splitIndex]].append(space[i])

    #get entropy for each partition
    for i in range (0, numPossibleValues-1):
        info += Entropy(partitions[i])*len(partitions[i])/len(space)

    return (Entropy(space) - info)

a =[[1,0,0,1],
    [1,0,0,1],
    [0,0,0,1],
    [0,0,0,1],
    [0,0,0,1],
    [0,0,0,1],
    [0,0,0,1],
    [0,0,0,1],]

print(InformationGain(a,1))

在那个版本中,我得到一个" IndexError:列表索引超出范围"在append()的行上。但它没有说明哪个列表索引超出范围。请帮助我走上正轨。

0 个答案:

没有答案