如何在numpy多维数组中插入单词?

时间:2014-07-03 12:54:06

标签: python numpy multidimensional-array

我需要根据索引将一些从列表中取出的单词放入矩阵中。 我的代码如下:

for i in range(no_of_lines):
    for j in range(no_of_lines):
        cuv_matrix[i][j] = cuv_list[mat_index[i][j]]

cuv_list是单词列表,mat_index包含与cuv_list中的索引相对应的索引

cuv_matrix实际输出为:

[['\x88' 'M' '\x93' ..., '6' '4' '1']
 ['2' '8' '3' ..., '0' '1' '6']
 ['0' '3' '2' ..., '.' '0' '0']
 ..., 
 ['\xff' '\xff' '\xff' ..., '' '0' '.']
 ['0' '' '0' ..., '' '0' '.']
 ['0' '' '0' ..., '0' '.' '0']]

我宣称cuv_matrix的方式:

cuv_matrix = numpy.chararray((no_of_lines, no_of_lines))

我做错了什么,如何让矩阵的每个元素成为一个单词,就像这样?

预期产出:

[[movie film ..., actor]
      ... ...
character seen ..., director]]

稍后,我需要使用它们的坐标访问矩阵中的单词。

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,cuv_list只是一个列表,对吗?

所以,你需要一个外部计数器。

k = 0
for i in range(no_of_lines):
    for j in range(no_of_lines):
        cuv_matrix[i][j] = cuv_list[k]
        k += 1

再次查看您的问题,似乎您可能还想要一个字典来保存信息:

cuv_mat = {}
k = 0
for i in range(no_of_lines):
    for j in range(no_of_lines):
        cuv_matrix[i][j] = cuv_list[k]
        cuv_mat[cuv_list[k]] = (i,j)
        k += 1

或者,如果您想将坐标信息与原始列表保持在一起并且可能有重复项:

cuv_mat_locations = []
k = 0
for i in range(no_of_lines):
    for j in range(no_of_lines):
       cuv_matrix[i][j] = cuv_list[k]
       cuv_mat_locations.append([cuv_list[k], [i,j]])
       k += 1