一、函数
np.delete(array,obj,axis)
二、函数的意思
array:需要处理的矩阵
obj:需要处理的位置(索引),比如取0或1就代表要删除的第一行或者第二行
axis:
如果输入为None:array会先按行展开,然后按照obj,删除对应这个索引位置的数(索引从0开始),返回一个行矩阵。
如果输入为0:按行删除
如果输入为1:按列删除
三、代码例子
1、axis输入为None
import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
a_1 = np.delete(a,2,None) #按行展开后,删除第2 +1个数,因为是从0开始的
print(a_1)
2、axis输入为0,表示删除一行
import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
a_1 = np.delete(a,0,0) #删除第一行
print(a_1)
import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
a_1 = np.delete(a,[0,1],0)
print(a_1)
3.axis输入为1
import numpy as np
a = np.array([[1,2,7],[3,4,8],[5,6,9]])
a_1 = np.delete(a,0,1) #删除第一列
print(a_1)
import numpy as np
a = np.array([[1,2,7],[3,4,8],[5,6,9]])
a_1 = np.delete(a,[0,2],1)
print(a_1)
4. 一般用时会将np.delete和np.where相结合,即obj参数有np.where代替:
np.where有两种用法
1).np.where(condition,x,y) 当where内有三个参数时,第一个参数表示条件,当条件成立时where方法返回x,当条件不成立时where返回y
2).np.where(condition) 当where内只有一个参数时,那个参数表示条件,当条件成立时,where返回的是每个符合condition条件元素的索引,返回的是以元组的形式,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。
具体去看np.where()的使用方法
#velo的shape是(4, 1791),表示有1791个lidar点,4分别表示是x,y,z,intensity。下面这行代码的意思就是过滤不满足z的点。
velo = np.delete(velo,np.where(velo[2,:]<-1.73),axis=1)#kitti的lidar高度为1.73,过滤地面的点