在处理numpy数组,有这个需求,故写下此文:
使用np.argwhere和np.all来查找索引。要使用np.delete删除它们。
示例1
import numpy as npa = np.array([[1, 2, 0, 3, 0],[4, 5, 0, 6, 0],[7, 8, 0, 9, 0]])idx = np.argwhere(np.all(a[..., :] == 0, axis=0))a2 = np.delete(a, idx, axis=1)print(a2)\"\"\"[[1 2 3][4 5 6][7 8 9]]\"\"\"
示例2
import numpy as nparray1 = np.array([[1,0,1,0,0,0,0,0,0,1,1,0,0,0,1,1,0,1,0,0],[0,1,1,0,0,1,1,1,1,0,0,0,1,0,1,0,0,1,1,1],[0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,1,1],[0,1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,0,0,1,1],[0,0,1,0,0,1,1,1,0,1,0,1,1,0,1,1,0,0,1,0],[1,0,1,0,0,0,1,0,0,1,1,1,1,0,1,1,0,0,1,0],[1,0,1,0,1,1,0,0,0,0,1,0,0,0,1,0,0,0,1,1],[0,1,0,0,1,0,0,0,1,0,1,1,1,0,1,0,0,1,1,0],[0,1,0,0,1,0,0,1,1,0,1,1,1,0,0,1,0,1,0,0],[1,0,0,0,0,1,0,1,0,0,0,1,1,0,0,1,0,1,0,0]])mask = (array1 == 0).all(0)column_indices = np.where(mask)[0]array1 = array1[:,~mask]print(\"raw array\", array1.shape) # raw array (10, 20)print(\"after array\",array1.shape) # after array (10, 17)print(\"=====x=====\\n\",array1)
其它查看:Python开发/ 删除全零列
from pandas import DataFramedf1=DataFrame(np.arange(16).reshape((4,4)),index=[\'a\',\'b\',\'c\',\'d\'],columns=[\'one\',\'two\',\'three\',\'four\']) # 创建一个dataframedf1.loc[\'e\'] = 0 # 优雅地增加一行全0df1.ix[(df1==0).all(axis=1), :] # 找到它df1.ix[~(df1==0).all(axis=1), :] # 删了它
到此这篇关于Numpy(Pandas)删除全为零的列的方法的文章就介绍到这了,更多相关Numpy删除全为零的列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- 使用Numpy读取CSV文件,并进行行列删除的操作方法
- numpy中的delete删除数组整行和整列的实例
- 如何实现删除numpy.array中的行或列
- numpy.delete删除一列或多列的方法