numpy学习笔记

Numpy 学习笔记

建立数组

t1 = np.array([0,1,2,3,4,5,6,7,8])
t2 = np.array(range(9))
t3 = np.arange(9)

type()查看的是变量的类型
dtype查看数组内部的数据类型

print(type(t1))
print(t1.dtype)

#结果
<class 'numpy.ndarray'>
int32

指定更改数据类型

#指定数据类型
t1 = np.arange(10,dtype = "int64")
#更改数据类型
t2 = t1.astype(dtype = "float")
#保留指定位数小数
t3 = np.round(random.random(),2)

数组的形状

t1 = np.arange(24)
print("t1:",t1.shape)
t2 = t1.reshape(4,6)
print("t2:",t2.shape)
t3 = t1.reshape(2,3,4)
print("t3:",t3)
t4 = t1.reshape(24,)
print("t4:",t4)
t5 = t1.reshape(24,1)
print("t5:",t5)
t6 = t5.flatten()
print("t6:",t6)
t7 = t2.reshape(t2.shape[0]*t2.shape[1],)
print("t7:",t7)
#结果
t1: (24,)
t2: (4, 6)
t3: [[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
t4: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
t5: [[ 0]
 [ 1]
 [ 2]
 [ 3]
 [ 4]
 [ 5]
 [ 6]
 [ 7]
 [ 8]
 [ 9]
 [10]
 [11]
 [12]
 [13]
 [14]
 [15]
 [16]
 [17]
 [18]
 [19]
 [20]
 [21]
 [22]
 [23]]
t6: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]
t7: [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

【注意】
1、reshape不会对原值产生更改
2、reshape(24,)传一个值才是一维。
reshape(t1.shape[0]*t1.shape[1],) = flatten

数组的计算

和数字进行计算

数组内每一个值分别和数字进行计算

和数组进行计算

形状一样的数组对应位置相加(减乘除)
形状不同的数组
在某一个方向上个数一致可以计算

np.sum

#axis = 0 对列求和
np.sum(t2,axis = 0)
#axis = 1 对行求和
np.sum(t2,axis = 1)
#省略axis对整个数组求和

数组的轴

reshape(2,3,4)
axis = 0 (2)
axis = 1 (3)
axis = 2 (4)

Numpy 读取数据

#delimiter 需要指定
#unpack 相当于转置,交换行列
np.loadtxt(fname,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)

在这里插入图片描述
在numpy中有三种方法可以实现转置

t1.transpose()
t1.T
t1.swapaxes(1,0)
#swapaxes参数将1放在0前面

numpy 中的切片和索引

#取行
gb_video[2]
#取连续多行
gb_video[2:]
#取不连续的多行
gb_video[[2,4,5]]
#取列
gb_video[:,2]
#取不连续的列
gb_video[:,[1,3]]
#取多个相邻点
gb_video[2:5,1:5]
#取多个不相邻的点(0,1)(3,2)
gb_video[[0,3],[1,2]]

按条件进行赋值

#布尔索引
t1[t1>20] = 1000
#np.where
#不改变t1
np.where(t1>=50,700,-1)
#t1.clip()
#不改变t1
t1 = np.arange(24).reshape(4,6)
print(t1.clip(5,20))
print(t1)

#t1[:,-1]取最后一列

nan and inf

nan(NAN,Nan):not a number表示不是一个数字
当我们读取本地的文件为float的时候,如果有缺失,就会出现nan
当做了一个不合适的计算的时候(比如无穷大(inf)减去无穷大)
nan的性质

nan的特性

#1、两个nan是不相等的
#2、判断数组中nan的个数

#用np.isnan()
t2 = np.arange(60,84).reshape(4,6).astype(float)
t2[2,4] = np.nan
t2[2,2] = np.nan
nan = np.count_nonzero(np.isnan(t2))

#用nan!=nan
nan2 = np.count_nonzero(t2!=t2)

#3、nan和任何数计算都是nan

inf(-inf,inf):infinity,inf表示正无穷,-inf表示负无穷
一个数字除以0会出现inf

#赋值成nan
#nan和inf都是浮点型,如果数组的值是整型需要先转化为浮点型
a = np.nan

nan的处理方法

比如,全部替换为0后,替换之前的平均值如果大于0,替换之后的均值肯定会变小,所以更一般的方式是把缺失的数值替换为均值(中值)或者是直接删除有缺失值的一行

数据的拼接和拆分

#竖直拼接
np.vstack((t1,t2))
#水平拼接
np.hstack((t1,t2))

t1 = np.arange(24).reshape(4,6)
t2 = np.arange(60,84).reshape(4,6)
print("竖向拼接")
print(np.vstack((t1,t2)))
print("横向拼接")
print(np.hstack((t1,t2)))
#结果
竖向拼接
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]
 [60 61 62 63 64 65]
 [66 67 68 69 70 71]
 [72 73 74 75 76 77]
 [78 79 80 81 82 83]]
横向拼接
[[ 0  1  2  3  4  5 60 61 62 63 64 65]
 [ 6  7  8  9 10 11 66 67 68 69 70 71]
 [12 13 14 15 16 17 72 73 74 75 76 77]
 [18 19 20 21 22 23 78 79 80 81 82 83]]

数组的行列交换

#交换行
t1[[1,2],:] = t1[[2,1],:]
#交换列
t1[:,[1,2]] = t1[:,[2,1]]

np.zeros/np.ones/np.eye

np.zeros(us_data.shape[0],1).astype(int)
np.ones(uk_data.shape[0],1).astype(int)
#生成一个对角线为1的方阵
np.eye(10)

Numpy生成随机数

np.random.----
在这里插入图片描述

numpy 中的统计公式

#返回每一行的最大值
np.argmax(t,axis = 0)
#返回每一行的最小值
np.argmin(t,axis = 0)


#求和:
t.sum(axis=None)
#均值:
t.mean(a,axis=None)  
#中值:
np.median(t,axis=None) 
#极值:
np.ptp(t,axis=None) 
#标准差:
t.std(axis=None) 

思维导图

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值