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

标签 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]

我想得到一个如下所示的新矩阵:

[1 3 1]  
[2 1 0]  
[4 3 4]  
[1 3 4]  
[1 4 5]

最佳答案

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

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]])

关于python - 如何删除numpy中具有相同值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46798156/

相关文章:

python - 为什么 3D numpy 数组按原样打印(它们是如何排序的)?

python - 大型二维掩码数组的插值

python - 加速Python中的大型矩阵序列化?

python - 如何允许python脚本写入不存在的目录?

python - 在spss python中组合变量

python - tensorflow r1.0 : could not a find a version that satisfies the requirement tensorflow

python - 将 ASCII 代码的 Numpy 数组转换为字符串

python - 如何从对角线全为零的列表中从左到右填充二维数组