如何删除python中的零列?
我想出了如何使用代码array[~(array==0).all(1)]
删除行,我想我可以简单地写array[~(array==0).all(0)]
来删除列,但这给了我一个错误(布尔索引与索引数组不匹配)维度0;维度为4,但相应的布尔维度为6)。为什么会这样?
答案 0 :(得分:0)
语句~(array==0).all(0)
将为您提供要保留列的掩码。
例如
>>> array
array([[0, 0, 0],
[1, 1, 0]])
>>> ~(array==0).all(0)
array([ True, True, False])
因此,您只需要将蒙版应用于数组的第二个轴。
因此
>>> array[:,~(array==0).all(0)]
array([[0, 0],
[1, 1]])
答案 1 :(得分:0)
这可能有帮助-
import numpy as np
dataset = np.array([[ 5, 8, 0], [ 1, 2, 0]])
dataset
>> array([[5, 0, 0],
[1, 2, 0]])
让我们删除
new_dataset= np.delete(dataset,np.where(~dataset.any(axis=0))[0], axis=1)
new_dataset
>>
array([[5, 0],
[1, 2]])
仅在整个列为0时删除。