Numpy_数据选取和过滤

索引的不同

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
posted @ 2023-05-31 12:25  辰令  阅读(365)  评论(0编辑  收藏  举报