#reshape
n = np.arange(1,21) #1到20的一维数组
n2 = np.reshape(n,(4,5)) #一维数组变4行5列二维数组
n2.reshape((5,4)) #变为5行4列
n2.reshape(5,4)
n2.reshape(2,-1) #-1为自动计算剩余维度长度,变为2行10列
#级联,合并
n1 = np.random.randint(0,100,size=(3,5))
n2 = np.random.randint(0,100,size=(3,5))
display(n1,n2)
np.concatenate((n1,n2)) #默认axis=0上下合并
np.vstack((n1,n2)) #同上
np.concatenate((n1,n2),axis=1) #axis=0表示第一个维度(行),axis=1表示第二个维度(列)
np.hstack((n1,n2)) #同上
#拆分
n = np.random.randint(0,100,size=(6,4))
np.vsplit(n,3) #垂直拆分,平均分成3份
np.vsplit(n,(1,2,4)) #从1,2,4的位置拆分
np.hsplit(n,2) #水平方向上拆分,平均分成两份
cat1 = np.imread('cat.jpg')
cat2 = np.split(cat1,4,axis=0) #猫的图片上下拆分
#拷贝,复制(不影响原数据值)
n = np.arange(10)
n2 = n
n2[0] = 100
display(n,n2) #得到的n和n2是相同的,即修改n2的同时n也被修改
n1 = np.arange(10)
n3 = n1.copy()
display(n1,n3) #得到的n1和n3不同,只有n3被修改过
#聚合操作
n = np.arange(10)
np.sum(n) #从0到9所有数累加
n = np.random.randint(0,10,size(3,4))
np.sum(n) #数组中所有数相加
np.sum(n,axis=0) #每一列进行行求和,不是对每行的数据进行求和
np.sum(n,axis=1) #每行多列求和
np.max(n)
np.min(n)
np.mean(n) #平均值同np.average
np.median(n) #中位数
np.percentile(n,q=50) #百分位数,q=50表示中位数
np.argmax(n) #第一个最大值对应的下标,arg可以理解为索引
np.argwhere(n==np.max(n)) #按条件找到所有最大值的下标
np.power(n,3) #3次方,同n**3
np.std(n) #标准差
np.var(n) #方差
n = np.array([1,2,3,np.nan]) #数组中存在空值
np.nansum(n) #有空值时的聚合操作,排除空值后进行聚合操作
Python基础之NumPy(二)
最新推荐文章于 2024-08-31 21:39:38 发布