python - Numpy:了解行名称的 numpy 数组概念

标签 python arrays numpy

也许是一个非常模糊的问题,但挖掘 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)

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

我想 void 不是存储二进制数组以进一步计算相似度矩阵的正确方法?

最佳答案

Numpy 并不真正支持行名称。它确实支持列名,通过 structured arrays .您可以使用类似 dtype=[('name', object), ('val1', int), ...] 的内容。也许,这也可以通过读取文件的第一行来实现自动化。

genfromtxt 给你的只是一个 object 类型的数组,其中一列恰好包含字符串,而其他列恰好包含整数——但它们都是存储为 Python 对象的效率低下,而不是高效的格式。

您可能对 pandas 感兴趣,它扩展了 numpy 矩阵,支持标记行(以及许多其他内容)。 pandas.read_table将很好地处理您的文件。

关于python - Numpy:了解行名称的 numpy 数组概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18256220/

相关文章:

python - 如何使用 Python 3 安装 pip?

python - 从输入访问字典内的列表

python - 在另一个子进程仍在运行时调用子进程,可以吗?

ruby-on-rails - 事件记录列名称转换为哈希数组

python - Scikit 网格搜索 KNN 回归 ValueError : Array contains NaN or infinity

python - 在文件系统中创建和共享 python 包

java - 如何从 Kotlin 中的 java 类型数组获取 javaclass?

javascript - 使用 JQuery 遍历数组

python - Keras:ValueError:检查输入时出错

python - Numpy 点操作未使用所有 cpu 内核