索引的不同
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