Numpy学习
# 使用numpy生成数组,得到ndarray类型 t1 = np.array([1, 2, 3, ]) print(t1) print(type(t1)) t2 = np.arange(4, 12, 2) # 2步长 print(t2) t3 = np.array(range(10)) print(t3) t3.dtype # t3中元素的数据类型 t4 = np.array(range(1, 4), dtype="int8") # 指定数据类型 t4.astype(float)#修改数据类型 t5 = np.array([random.random() for i in range(10)]) # 取小数 t6 = np.round(t5, 2) # 小数保留两位 print(t2.shape) # 形状(行数,列数) t5.reshape((2, 5)) # 改变形状 t7 = np.arange(24).reshape((2, 3, 4)) print(t7) t7.reshape((24,)) # 下面俩都是二维的 t7.reshape((1, 24)) t7.reshape((24, 1)) t7 = t7.reshape((4, 6)) print(t7.shape[0], t7.shape[1]) # 行与列 t7.flatten() # 展开成一维度 t7 = t7 + 2 # 广播机制,都加2 t8 = np.arange(100, 124).reshape((4, 6)) print(t7 + t8) # 对应值相加 t9 = np.arange(6) print(t7 - t9) # 相同维度操作 # 行列都不一样将无法计算 # 在形状上包含就可运算
uk_file_path="./test_data/GB_video_data_numbers.csv" us_file_path="./test_data/US_video_data_numbers.csv" t1=np.loadtxt(us_file_path,delimiter=",",dtype="int",skiprows=0,unpack=False)#skiprows,跳过前n行 unpack转置 print(t1) print("*"*100) t1[2]#取行 t1[2:]#取多行,连续 t1[[2,8,10]]#取多行,不连续 t1[1,:]#[行,列]取第二行,:代表都要 t1[:,0]#取第一例 t1[2,3]#取第3行第4列 t1_flag=t1[2:5,1:4]#取多行多列 print(t1_flag) t1[[0,1,2],[1,2,2]]#取多个不相邻的点,[0,1] ,[1,2],[2,2] t1[t1<1100]=3#将小于1100的替换为3 np.where(t1<10,0,10)#t1<10赋值为0,否则赋值为10,三元运算符 t1.clip(1000,20000)#将小于1000的替换为1000,将大于20000的替换为20000 np.nan==np.nan#两个nan不一定相等,not a number np.count_nonzero(t1!=t1)#统计nan的个数
#nan加任何数都是nan
np.sum(t1_flag)#将所有数相加
t2=np.arange(12).reshape((3,4))
print(t2)
#注意对“轴”的理解
print(np.sum(t2,axis=0))#行相加
print(np.sum(t2,axis=1))#列相加
#numpy常用函数
t2.sum()
print(t2.mean(axis=0))#均值
print(np.median(t2,axis=1))#中值
#最大最小值
t2.max()
t2.min()
np.ptp(t2)#极值
print(t2.std())#标准差