我有一个由零和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方法来实现这一目标?
谢谢,
答案 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]