使用枚举和映射

Use of enumerate and mapping

newResidues = [1, 2, 3, 4, 5]
newI = [[1,0,1,0,1],[1,1,0,0,0],[1,0,0,1,0]]
newI = np.array(newI)

for i in range(newI.shape[0]):
    indices = [for i,num in enumerate(newI) if num == 1] #line1
    indicesToResidues = dict(zip(indices,newResidues[indices]))#line2

所以我知道我的代码不正确...这只是我尝试做的尝试...

在第 1 行中,我尝试做的是在矩阵中每行有 1 的地方单独列出索引。所以矩阵第一行的索引看起来像 [0,2,5]

在第 2 行中,尝试将这些索引映射到列表 newResidues 中具有相同索引的特定值。

任何 help/comments 将不胜感激,谢谢!

用以下内容替换您的循环:

from itertools import compress
for i in newI:
    print map(lambda _: newResidues.index(_), compress(newResidues, i))

itertools.compress 非常简洁,似乎非常适合您的用例。在上面从 compress 取回值后,它从 newResidues 找到每个值的索引——但是,如果 newResidues 中有重复值,这将无法正常工作!