如何删除numpy中具有相同值的列

Mr.*_*Liu 2 python numpy matrix

如何删除数组中具有相同值的所有列NumPy

例如,如果我有这个矩阵:

[0 1 2 3 1]  
[0 2 2 1 0]  
[0 4 2 3 4]  
[0 1 2 3 4]  
[0 1 2 4 5]
Run Code Online (Sandbox Code Playgroud)

我想要一个新的矩阵,如下所示:

[1 3 1]  
[2 1 0]  
[4 3 4]  
[1 3 4]  
[1 4 5]
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 5

您可以将数组与其自身的移位版本进行比较,如果一列的所有对都相等,则该列仅包含一个唯一值,可以使用布尔索引将其删除:

a[:, ~np.all(a[1:] == a[:-1], axis=0)]

#array([[1, 3, 1],
#       [2, 1, 0],
#       [4, 3, 4],
#       [1, 3, 4],
#       [1, 4, 5]])
Run Code Online (Sandbox Code Playgroud)