Skip to main content
 首页 » 编程设计

python之如何在python中将数组制作成数组列表

2025年05月04日13birdshome

来自这个数组

s = np.array([[35788, 41715, ... 34964],  
          [5047, 23529, ... 5165],  
          [12104, 33899, ... 11914],  
          [3646, 21031, ... 3814],  
          [8704, 7906, ... 8705]]) 

我有一个这样的循环

end =[] 
for i in range(len(s)): 
    for j in range(i, len(s)): 
        out = mahalanobis(s[i], s[j], invcov)        
        end.append(out) 
print end 

然后我获取输出:

[0.0, 12.99, 5.85, 10.22, 3.95, 0.0, 5.12, 3.45, 4.10, 0.0, 5.05, 8.10, 0.0, 15.45, 0.0] 

但我想要这样的输出:

[[0.0, 12.99, 5.85, 10.22, 3.95],  
[12.99, 0.0, 5.12, 3.45, 4.10],  
[5.85, 5.12, 0.0, 5.05, 8.10],  
[10.22, 3.45, 5.05, 0.0, 15.45],  
[3.95, 4.10, 8.10, 15.45, 0.0]] 

请您参考如下方法:

您至少需要以两种方式进行不同的循环:

end =[] 
for s1 in s: 
    end.append([mahalanobis(s1, s2, invcov) for s2 in s]) 

最重要的是内层循环需要再次对整个s,否则你永远不会得到一个正方形而是1 + 2 + ... + len(s ) 项(在本例中为 15,因为 len(s) 为 5)。

接下来,内部循环必须包含在一个列表中,因为您需要一个列表的列表。

不太重要但很好:我已将内部循环更改为列表理解;并且我已经将两个循环都更改为直接在 s 上进行,因为确实没有理由遍历循环索引然后使用这些索引获取 s 项的间接方法关心。

所以我总共做了四项更改,但前两项是您真正需要的才能获得您想要的结果,另外两项只是很好的改进:-)。