首页 > 其他分享 >Numpy_数据选取和过滤

Numpy_数据选取和过滤

时间:2023-05-31 12:46:24浏览次数:34  
标签:索引 Numpy 选取 where 过滤 数组 np numpy condition

索引的不同

numpy多维数组索引
  data[0,1] 定位一个指定的具体数值,没有维度
  data[0,:]定位一维数组
  data[:,:] 定位二维数组

import numpy as np 
if __name__ == "__main__":
    a=np.array([[[ 0,  1,  2],
            [ 3,  4,  5],
            [ 6,  7,  8]],
     
           [[ 9, 10, 11],
            [12, 13, 14],
            [15, 16, 17]],
     
           [[18, 19, 20],
            [21, 22, 23],
            [24, 25, 26]]])
     
    b=np.where(a > 5) 
	##注意 切片 2:3 和直接取值3 不同
    c=np.where(a[:,:,2] > 5)
    d=np.where(a[:,:,2:3] > 5)
	print(c.shape,d.shape)

数组类型变换--数值填充

np.pad()用来在numpy数组的边缘进行数值填充
   pad_width参数类型:sequence,array_like,int
    pad_width:每个轴要填充的数据的数目【每个维度前、后各要填充多少个数据】
      一维数组的rank = 1,所以对一维数组填充时,其pad_width参数只能是一个元组(before_1, after_1)
     
      二维数组的rank = 2,因此对二维数组填充时,其pad_width参数可以是两个并列的元组
        ((before_1, after_1), (before_2, after_2))
        ,但要注意将其合并为一个整体(即外加括号变成一个大元组)一起进行传参
	     
      三维数组
      ((before_1, after_1), (before_2, after_2), (before_3, after_3))
	  
    ‘constant’——表示连续填充相同的值,每个轴可以分别指定填充值,
       constant_values=(x, y)时前面用x填充,后面用y填充,缺省值填充0	  
    edge
 转换成 齐次矩阵(Homogeneous Transformations) 
    ((0, 0), (0, 0), (0, 1)) ‘constant’  constant_values=(0,1.0)

提取和删除

提取符合条件的元素
   提取符合条件的行和列
      使用 numpy.all() 提取所有元素均满足条件的行和列
      使用 numpy.any() 提取具有至少一个满足条件的元素的行/列
删除符合条件的元素,行和列
    使用否定运算符〜
   使用numpy.delete() 和numpy.where()

提取的特点
       ndarray [条件表达式]。即使原始ndarray是多维数组,它也将返回一个展平的一维数组
       使用np.all(),np.any(),则可以在保留原始ndarray尺寸的同时提取行和列		   
   
   三个参数 np.where 函数是三元表达式 x if condition else y 的向量化版本,它有两种用法:
     np.where(condition,x,y) 当where内有三个参数时,第一个参数表示条件,当条件成立时where方法返回x,当条件不成立时where返回y
        np.where(condition, [x, y]),这里三个参数,其中必写参数是condition(判断条件),后边的x和y是可选参数.
    
     np.where(condition) 当where内只有一个参数时,那个参数表示条件,
         当条件成立时,where返回的是每个符合condition条件元素的坐标,返回的是以元组的形式
		    返回的结果是符合条件的位置信息
   	返回的是满足条件的元素索引。
        1)condition为一维数组,返回值out为一个一维数组索引组成的元组;
        2)condition为二维数组,返回值out为两个一维数组组成的元组,第一个数组为dim=0(行)的索引,第二个数组为dim=1(列)的索引。
     通过np.where(condition)得到索引元组后可以直接用于获取对应索引的元素数值		 
	  
   argwhere: arg(argument的缩写),where(表示索引在哪里)。
       返回满足括号内条件的元素的索引,数组形式	   
	  
   np.delete()将目标ndarray,要删除的索引(行号,列号等)以及目标轴(维)轴设置为参数。

     在二维数组的情况下,axis = 0删除行,而axis = 1删除列,这与上面的np.all()和np.any()不同
	

 numpy.delete(arr,obj,axis=None)
   arr:输入向量
     obj:表明哪一个子向量应该被移除。可以为整数或一个int型的向量
     axis:表明删除哪个轴的子向量,若默认,则返回一个被拉平的向量

  np.delete(a, list(np.unique(np.where(a[:, :, 2:3] < 0)[0])), axis=0)  


 np.insert(arr, obj, values, axis)
     #arr原始数组,可一可多,obj插入元素位置,values是插入内容,axis是按行按列插入(0:行、1:列)

-- 算术运算符 关系运算符 逻辑运算符 位运算符	
01.算数函数
  add(),subtract(),multiply() 和 divide()  numpy.power() numpy.mod()  numpy.reciprocal()
02.代数函数
 大于       np.greater()
 小于       np.less()
 大于等于   np.greater_equal()
 小于等于   np.less_equal()
 值是否相等 np.equal()
    不等于  np.not_equal()

03.逻辑判断的函数,即logical_and(),logical_or(), logical_not(), logical_xor()
np.logical_and/or/not 相当于逻辑与/或非	 
  np.logical_or  np.logical_and 
  np.multiply()   *	
  
04.位函数
   bitwise_and  bitwise_or  invert
05.基本初等函数
  幂函数、指数函数、对数函数、三角函数、反三角函数、常数函数
    numpy.floor()  numpy.ceil()	  
06.统计函数 
   numpy.amin() 和 numpy.amax() numpy.percentile()  numpy.median()  numpy.mean() numpy.average()
   numpy.argmax() 和 numpy.argmin()
   np.std  np.var
07.矩阵运算-
    卷积函数-numpy.convolve  np.pad()

08.字符串函数

09.排序 筛选 过滤
    numpy.sort()  numpy.argsort()  numpy.lexsort()  msort、sort_complex、partition、argpartition
	numpy.extract()
10 微积分
   定积分-不定积分 多重微积分 偏微分
     np.gradient(f)

python 和R语言的区别

01.python 索引是从0开始,R语言是从1开始的
   python  range(10) 是0-9
   r语言  seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)), length.out = NULL, along.with = NULL, ...) 1	   
      seq(1,10)          ## 指定起点和终点, 默认步长为1
       [1]  1  2  3  4  5  6  7  8  9 10
  
  归一化的成像平面,就是将三维空间点的坐标都除以Z

标签:索引,Numpy,选取,where,过滤,数组,np,numpy,condition
From: https://www.cnblogs.com/ytwang/p/17445788.html

相关文章

  • 【wireshark】常用过滤规则
    Wireshark是一款流行的网络协议分析工具,使用它可以捕获网络数据包,并对其进行分析。在Wireshark中,过滤规则是非常重要的,通过过滤规则可以快速定位和过滤关注的数据包一、基础过滤规则1、按IP地址过滤ip.addr==x.x.x.x#过滤指定IP地址的数据包ip.src==x.x.x.x#过滤源IP......
  • java简单实现布隆过滤器
    为了方便理解布隆过滤器,java简单实现了下,特点:仅用做一次运算就可以判断存在不存在,但是只能精确的判断值不存在,不能精确的判断值存在publicclassBlTest{privatefinalintf=1024;//负载因子,值越大判断的越精准,但是所占的空间也越大int[]bArray;BlTest(){......
  • WPF RichTextBox 过滤中文不生效的问题
    WPFRichTextBox过滤中文不生效的问题1.问题使用系统自带的OnPreviewTextInput事件,过滤用户输入时,可以在OnPreviewTextInput中利用e.Handled=true过滤英文和数字等的输入,但是无法过滤中文字符的录入。2.解决方法不使用系统的PreviewTextInput事件,而是调用TextCompositionMa......
  • NumPy学习5
    今天学习了11,NumPy数组元素增删改查NumPy数组元素的增删改查操作,主要有以下方法:数组元素操作方法函数名称描述说明resize返回指定形状的新数组。append将元素值添加到数组的末尾。insert沿规定的轴将元素值插入到指定的元素前。delete删掉某个轴上的子数组,并返回删除后......
  • 在树莓派上实现numpy的conv2d卷积神经网络做图像分类,加载pytorch的模型参数,推理mnist
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是卷积识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorchvisionimportdatasets,transformsimportn......
  • 在树莓派上使用numpy实现简单的神经网络推理,pytorch在服务器或PC上训练好模型保存成nu
    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是mlp识别mnist手写数字识别训练代码在电脑上,cpu就能训练,很快的:1importtorch2importtorch.nnasnn3importtorch.optimasoptim4fromtorchvisionimportdatasets,transfor......
  • python推荐系统实现(矩阵分解来协同过滤)|附代码数据
    原文链接:http://tecdat.cn/?p=10911最近我们被客户要求撰写关于推荐系统的研究报告,包括一些图形和统计输出。用户和产品的潜在特征编写推荐系统矩阵分解工作原理使用潜在表征来找到类似的产品 1.用户和产品的潜在特征我们可以通过为每个用户和每部电影分配属性,然后将它们相......
  • MATLAB模糊C均值聚类FCM改进的推荐系统协同过滤算法分析MovieLens电影数据集
    全文链接:http://tecdat.cn/?p=32594原文出处:拓端数据部落公众号在当今信息爆炸的时代,电影作为人们生活中不可或缺的娱乐方式,受到了越来越多的关注。而为了让观众能够更好地选择适合自己口味的电影,推荐系统成为了一个备受关注的研究领域。协同过滤算法是其中一种被广泛使用的方法......
  • java集合过滤出符合条件的List元素集合(lambda表达式)
    使用Java8中的lambda表达式过滤ModelMapmodel=newModelMap();TSmClazzTSmClazz=tSmClazzService.get(id);List<Student>students=TSmClazz.getStudents();if(flag.equals("0")){List<Student>boys......
  • NumPy学习4
    今天学习NumPy相关数组操作NumPy中包含了一些处理数组的常用方法,大致可分为以下几类:(1)数组变维操作(2)数组转置操作(3)修改数组维度操作(4)连接与分割数组操作numpy_test4.py:importnumpyasnp'''10,NumPy相关数组操作NumPy中包含了一些处理数组的常用方法,大致可分......