# 使用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())#标准差