Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python填充数组(numpy)?_Python_Arrays_Numpy - Fatal编程技术网

用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']