从矩阵到单词列表

时间:2013-11-12 16:27:24

标签: python string matrix

我有一个由零和1的c矩阵组成的NumPy r。我有一个c字列表。我想返回一个长度为r的列表,其中每个元素是一个以空格分隔的字符串,仅由那些与该矩阵行中的1匹配的单词组成。这是一个例子:

matrix=np.array([[0,0,1],[1,0,1],[0,1,1]])
words=['python','c++','.net']

output=[]
for row in range(matrix.shape[0]):
    output.append( ' '.join([words[i]  for i in range(matrix.shape[1]) if matrix[row,i]==1]))

什么是Pythonic方法来实现这一目标?

谢谢,

2 个答案:

答案 0 :(得分:3)

看哪:

>>> [' '.join(word for include_word, word in zip(row, words) if include_word) 
     for row in matrix]
['.net', 'python .net', 'c++ .net']

这是一个有趣的=)。

答案 1 :(得分:0)

这不像使用迭代器/生成器的本机python解决方案那样内存友好,但也许它是numpythonic ......

matrix=np.array([[0,0,1],[1,0,1],[0,1,1]], dtype=bool)
wordsArray=numpy.array(['python','c++','.net'])

output = [' '.join(wordsArray[elem]) for elem in matrix]