2021-08-12

numpy

学习内容

创建数组(矩阵):

a=np.array([1,2,3,4,5])
b=np.array(range(1,6))
c=np.arange(1,6)

按某种形式输出

t2=np.array([1,0,1,0],dtype='?')
print(t2)
print(t2.astype("i1"))

这里的dtype指创建数组的类型
t2.astype(“i1”)指按整数型输出

保留小数

print(np.round(t3,2))

关于数组的形状及转化

#数组形状
t1=np.arange(1,13).reshape(2,6)
print(t1)
print(t1.shape)
#reshape返回值是新数组
b=t1.reshape(3,4)
print(b)
#把数组转化成1维数组
b1=b.reshape(1,12)
print(b1)
print(b1.flatten())

数组之间的计算

#数组的加减乘除,是每个数都对应加减乘除
print(t1+1)
print(t1*3)
print(t1/2)
#数组和数组的计算
p1=np.array([[3,4,5,6,7,8],[4,5,6,7,8,9]])
p2=np.array([1,2,3,4,5,6])
print(p1*p2)
print(p1-p2)
p2=np.array([[1],[2]])
print(p1*p2)
print(p2*p1)#相同
#乘法是两个数组的列相同或某一个的列是1即可乘

转置

t=np.array([[0,1,2,3,4,5],[6,7,8,9,10,11],[12,13,14,15,16,17]])
#以下有三种转置方法(均为改变原数组)
print(t.transpose())
print(t.swapaxes(1,0))
print(t.T)
print(t)

数值及索引

按索引取出对应值

p=np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
print(p)
print("取第2行")
print(p[1])
print("取全部行,第3列")
print(p[:,2])
print("取第2行到第3行")
print(p[1:3])
print("取全部行,第3到4列")
print(p[:,2:4])

数值修改

#numpy中数值的修改(在原数组上修改)
t=np.arange(24).reshape(4,6)
t[:,2:4]=0
print(t)

三元运算符

#小于10变成0,否则变成10
print(np.where(t<10,0,10))

常用方法

#numpy中的clip(裁剪)
t=np.array([[ 0,1  ,2 , 3 , 4 , 5],
 [ 6 , 7 , 8  ,9 ,10 ,11],
 [12 ,13,14, 15,16 ,17],
 [18 ,19, 20,np.nan,np.nan,np.nan ]])
print(t.clip(10,18))#小于1O的替换为1O,大于18的替换为了18

#numpy中常用统计函数
t=np.arange(24).reshape(4,6)
print("总和",t.sum(axis=None))#总和
print("列和",t.sum(axis=0))#列和
print("行和",t.sum(axis=1))#行和
print("均值",t.mean(axis=None))
print("中值",np.median(t,axis=None))
print("最大值",t.max(axis=None))
print("最小值",t.min(axis=None))
print("极值",np.ptp(t,axis=None))
print("标准差",t.std(axis=None))
#数组的拼接
t1=np.arange(12).reshape(2,6)
t2=np.arange(12,24).reshape(2,6)
print("竖直拼接",np.vstack((t1,t2)))
print("水平拼接",np.hstack((t1,t2)))

#数组的行列交换
t1=np.arange(12).reshape(3,4)
t1[[1,2],:]=t1[[2,1],:]
print("行交换",t1)
t1[:,[0,2]]=t1[:,[2,0]]
print("列交换",t1)
# t1=np.arange(12).reshape(3,4)

#拓展
print(t1)
print("获取最大(小)值位置",np.argmax(t1,axis=None))
#创建一个全0,1的数组
t3=np.zeros((3,4))
t3=np.ones((3,4))
#创建单位矩阵
t2=np.eye(3)

ps:数据缺失

#以每一列的均值填充该列的nan
def fill_nan_by_column_mean(t):
    for i in range(t.shape[1]):
        nan_num = np.count_nonzero(t[:, i][t[:, i] != t[:, i]])  # 计算非nan的个数if nan_num > 0:# 存在nan值
        if nan_num>0:
            now_col = t[:,i]
            now_col_not_nan = now_col[np.isnan(now_col) == False].sum()  # 求和now_col_mean = now_col_not_nan / (t.shape[0] - nan_num) # 和/个数now_col[np.isnan(now_col)] = now_col_mean #赋值给now_col
            now_col_mean=now_col_not_nan/(t.shape[0]-nan_num)
            now_col[np.isnan(now_col)]=now_col_mean
            t[:, i] = now_col  # 赋值给t,即更新t的当前列
t=t=np.array([[ 0,1  ,2 , 3 , 4 , 5],
 [ 6 , 7 , np.nan  ,9 ,10 ,11],
 [12 ,13,14, np.nan,16 ,17],
 [18 ,19, 20,21,22,23]])
fill_nan_by_column_mean(t)
print(t)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值