Numpy(Pandas)删除全为零的列的方法

在处理numpy数组,有这个需求,故写下此文:

使用np.argwhere和np.all来查找索引。要使用np.delete删除它们。

示例1

import numpy as np
a = 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 np

array1 = 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)

其它查看:https://moonbooks.org/Articles/How-to-remove-array-rows-that-contain-only-0-in-python/

pandas 删除全零列

from pandas import DataFrame

df1=DataFrame(np.arange(16).reshape((4,4)),index=['a','b','c','d'],columns=['one','two','three','four'])   # 创建一个dataframe
df1.loc['e'] = 0          # 优雅地增加一行全0
df1.ix[(df1==0).all(axis=1), :]  # 找到它
df1.ix[~(df1==0).all(axis=1), :]  # 删了它

到此这篇关于Numpy(Pandas)删除全为零的列的方法的文章就介绍到这了,更多相关Numpy删除全为零的列内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • numpy中的delete删除数组整行和整列的实例

    numpy的delete是可以删除数组的整行和整列的,下面简单介绍和举例说明delete函数用法: numpy.delete(arr, obj, axis=None) 参数: arr:输入数组 obj:切片,整数,表示哪个子数组要被移除 axis:删除子数组的轴 axis = 0:表示删除数组的行 axis = 1:表示删除数组的列 axis = None:表示把数组按一维数组平铺在进行索引删除 返回:一个新的子数组 x = array([[1,2,3], [4,5,6], [7,8,9]])

  • 使用Numpy读取CSV文件,并进行行列删除的操作方法

    Numpy是Python强大的数据计算和处理模块,其操作数据非常迅速且简单易行. 首先读取CSV文件 >>> import numpy as np#导入numpy模块 >>> temp=np.loadtxt("file.csv",dtype=np.int,delimiter=',') 可以看到两行代码搞定,看一下temp的内容 >>> temp array([[21, 2, 32], [ 1, 2, 3], [ 2, 3, 4]])

  • numpy.delete删除一列或多列的方法

    基础介绍: numpy.delete numpy.delete(arr, obj, axis=None)[source] Return a new array with sub-arrays along an axis deleted. For a one dimensional array, this returns those entries not returned by arr[obj]. Parameters: arr : array_like Input array. obj : s

  • 如何实现删除numpy.array中的行或列

    话不多说,直接上代码吧! import numpy as np A = np.delete(A, 1, 0) # 删除A的第二行 B = np.delete(B, 2, 0) # 删除B的第三行 C = np.delete(C, 1, 1) # 删除C的第三列 参考引用: https://stackoverflow.com/questions/1642730/how-to-delete-columns-in-numpy-array 以上这篇如何实现删除numpy.array中的行或列就是小编分享

  • Numpy(Pandas)删除全为零的列的方法

    在处理numpy数组,有这个需求,故写下此文: 使用np.argwhere和np.all来查找索引.要使用np.delete删除它们. 示例1 import numpy as np a = 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) "&

  • Numpy如何检查数组全为零的几种方法

    目录 概要 1 numpy.any() 2 numpy.count_nonzero() 3 numpy.all() 4. 多维数组可以分axis进行判断 概要 简单介绍几种用于判断numpy数组是否全零的测试方法. 1 numpy.any() numpy.any()函数用于检查一个numpy数字是否存在任何一个非0元素,因此将numpy.any()的结果取反即得"numpy数组是否全0"的结果.例如: import numpy as np print('Using numpy.any(

  • PHP使用PHPExcel删除Excel单元格指定列的方法

    本文实例讲述了PHP使用PHPExcel删除Excel单元格指定列的方法.分享给大家供大家参考,具体如下: 需求是这样的: 有一个系统仅公司内部和外部经销商使用,在一个导出功能中公司内部员工跟外部经销商导出的列是不一样的(某些数据是不能提供给经销商的) 因为导出的数据都是一样的(某些列外数据外部没有)因此并没有单独处理,而是统一生成然后根据不同的账户再删除没有权限的列 /** * @Author: HTL * @Description: 移出单元列 * @objPHPExcel: phpexec

  • pandas删除某行或某列数据的实现示例

    目录 1.drop()函数 2.del函数 首先,创建一个DataFrame格式数据作为举例数据. # 创建一个DataFrame格式数据 data = {'a': ['a0', 'a1', 'a2'], 'b': ['b0', 'b1', 'b2'], 'c': [i for i in range(3)], 'd': 4} df = pd.DataFrame(data) print('举例数据情况:\n', df) 注:DataFrame是最常用的pandas对象,使用pandas读取数据文件

  • 在pandas中一次性删除dataframe的多个列方法

    之前沉迷于使用index删除,然而发现pandas貌似有bug? import pandas as pd import numpy as np df = pd.DataFrame(np.arange(12).reshape(3,4), columns=['A', 'B', 'C', 'D']) x=[1,2] df.drop(index=[1,2], axis=1, inplace=True) #axis=1,试图指定列,然并卵 print df 输出为 A B C D 0 0 1 2 3 还是

  • Python pandas删除指定行/列数据的方法实例

    目录 1.滤除缺失数据dropna() 1)滤除含有NaN值的所有行 2)滤除含有NaN值的所有列 3)滤除元素都是NaN值的行 4)滤除元素都是NaN值的列 5)滤除指定列中含有缺失的行 2.删除重复值 drop_duplicates() 1)keep=“first” 2)keep=“last” 3)keep=False 4)删除指定列中重复项对应的行 3.根据指定条件删除行列drop() 1).删除指定列 2).删除指定行 总结 1.滤除缺失数据dropna() import pandas

  • 如何利用Pandas删除某列指定值所在的行

    目录 前言 1.data.dropna() 1-1 axis确定删除存在缺失值的行或者是列 1-2 how 确定存在缺失值时,是否删除行或者列 1-3 thresh=n表示保留至少含有n个非na数值的行 1-4 subset确定要在哪些列中查找缺失值 1-5 inplace确定是否直接在原DataFrame修改 2.data.drop 2-1 labels 指定行或者列的名称 2-2 index 指定要删除的行 2-3 columns 指定要删除的列 3.实例 3-1 统计0的数量 3-2 找出

  • pandas删除行删除列增加行增加列的实现

    创建df: >>> df = pd.DataFrame(np.arange(16).reshape(4, 4), columns=list('ABCD'), index=list('1234')) >>> df A B C D 1 0 1 2 3 2 4 5 6 7 3 8 9 10 11 4 12 13 14 15 1,删除行 1.1,drop 通过行名称删除: df = df.drop(['1', '2']) # 不指定axis默认为0 df.drop(['1',

随机推荐