在Python中移除矩阵中仅包含零的列

3xiyfsfu  于 2023-02-10  发布在  Python
关注(0)|答案(1)|浏览(180)

我正在python上构建一个矩阵,一旦它被构建,我想删除所有只包含零的列。(有些列包含零,但不仅仅是因为我想保留它们。)

def remove_column_with_all_zeros(matrix):
    zero_columns = []
    for i in range(len(matrix[0])):
        column = [row[i] for row in matrix]
        if all(val == 0 for val in column):
            zero_columns.append(i)
    for i in sorted(zero_columns, reverse=True):
        for row in matrix:
            del row[i]
    return matrix

我试过这个功能了,但是不起作用。
谢谢

5f0d552i

5f0d552i1#

因此,如果不是,则将矩阵转换为np数组:这是一个例子我猜您希望在此处删除第一列

array([[0, 0, 1],
       [0, 2, 3],
       [0, 1, 4]])

因此,如果您的矩阵如上例所示,则可以执行以下操作:

matrixT = matrix.T
# This will return a boolean that will have True value where all the elements of a column are 0
all_zeros = (matrixT==0).all(1)
updated_matrix = np.delete(matrix, all_zeros, axis =1)

我的示例的输出:

array([[0, 1],
       [2, 3],
       [1, 4]])

让我知道它是否适合你!!

相关问题