用python填充数组(numpy)?
给定以下格式的文件:用python填充数组(numpy)?,python,arrays,numpy,Python,Arrays,Numpy,给定以下格式的文件: a a 0 a b 1 a c 1 b b 0 b a 1 b c 1 c c 0 c a 1 c b 1 第三列是第一列和第二列中项目之间的距离。如果我将此类文件作为嵌套列表读入pyton,如何将其转换为对称矩阵,即 a b c a 0 1 1 b 1 0 1 b 1 1 0 ??我还希望包括列名和行名 我更愿意使用numpy来完成这项任务 有什么建议吗 谢谢, D 我不知道如何在numpy中标记行和列,所以我只制作了一个dict,将行标签映射到行索引,另一个di
a a 0
a b 1
a c 1
b b 0
b a 1
b c 1
c c 0
c a 1
c b 1
第三列是第一列和第二列中项目之间的距离。如果我将此类文件作为嵌套列表读入pyton,如何将其转换为对称矩阵,即
a b c
a 0 1 1
b 1 0 1
b 1 1 0
??我还希望包括列名和行名
我更愿意使用numpy来完成这项任务
有什么建议吗
谢谢,
D
我不知道如何在numpy中标记行和列,所以我只制作了一个dict,将行标签映射到行索引,另一个dict对列执行相同的操作。如果您需要它,您可以制作一个反向贴图,如下所示,或者您可以制作行和列
稍微不同的方法:
import numpy as np
# Load "Row Col Value" text file
ar = np.loadtxt('file.txt', [('R','|S1'), ('C','|S1'), ('V','i')])
names = np.unique(np.row_stack((ar['R'], ar['C']))).tolist()
vf = np.vectorize(lambda x: names.index(x), otypes='i')
# load them in an output array
out = np.empty((len(names), len(names)), 'i')
out[vf(ar['R']), vf(ar['C'])] = ar['V']
rows_reverse = dict((v, k) for k, v in rows)
cols_reverse = dict((v, k) for k, v in cols)
import numpy as np
# Load "Row Col Value" text file
ar = np.loadtxt('file.txt', [('R','|S1'), ('C','|S1'), ('V','i')])
names = np.unique(np.row_stack((ar['R'], ar['C']))).tolist()
vf = np.vectorize(lambda x: names.index(x), otypes='i')
# load them in an output array
out = np.empty((len(names), len(names)), 'i')
out[vf(ar['R']), vf(ar['C'])] = ar['V']