Numpy:理解Numpy数组概念中的行名称

3
也许这是一个非常模糊的问题,但是在numpy上挖掘链接并没有帮助我。
我需要对类似于这样的二进制数组执行以下分层聚类的相似性矩阵计算。
name    val1    val2    val3    val4    val5
comp1   0   0   1   0   1
comp2   1   0   0   0   0
comp3   0   0   1   0   0
comp4   1   1   0   0   0
comp5   0   0   1   0   0

我不理解numpy中行名称的概念。我可以像这样读取文件:

test = np.genfromtxt('test.b', delimiter='\t', names = True, dtype = None)
print type(test[0])
numpy.void
print test[0]
('comp1',0, 0, 1, 0, 1)

但如何考虑行名(这些信息非常重要)?有可能吗?

我认为,用空值来存储二进制数组以进行相似度矩阵计算并不是正确的方法?

1个回答

6
Numpy不支持行名称,但是通过结构化数组支持列名称。您可以使用类似dtype=[('name', object), ('val1', int), ...]的东西。这也可以通过读取文件的第一行来自动完成。 genfromtxt给出的只是一个类型为object的数组,其中一列包含字符串,其他列包含整数 - 但是所有列都以Python对象的形式存储,而不是以高效的格式存储。
您可能会对pandas感兴趣,它扩展了numpy矩阵,并支持带标签的行(以及许多其他功能)。pandas.read_table可以很好地处理您的文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接