import numpy as np
import random
#使用numpy生成数组,得到ndarray的类型
t1 = np.array([1,2,3,])print(t1)print(type(t1))
t2 = np.array(range(10))print(t2)print(type(t2))
t3 = np.arange(4,10,2)print(t3)print(type(t3))print(t3.dtype)print("*"*100)#numpy中的数据类型
t4 = np.array(range(1,4),dtype="i1")print(t4)print(t4.dtype)##numpy中的bool类型
t5 = np.array([1,1,0,1,0,0],dtype=bool)print(t5)print(t5.dtype)#调整数据类型
t6 = t5.astype("int8")print(t6)print(t6.dtype)#numpy中的小数
t7 = np.array([random.random()for i inrange(10)])print(t7)print(t7.dtype)
t8 = np.round(t7,2)print(t8)
numpy数组的计算
import numpy as np
t1 = np.arange(12)print(t1)print(t1.shape)
t2 = np.array([[1,2,3],[4,5,6]])print(t2)print(t2.shape)
t3 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])print(t3)print(t3.shape)print("*"*50)
t4 = np.arange(12)print(t4)print(t4.reshape((3,4)))print("*"*50)
t5 = np.arange(24)print(t5.reshape((2,3,4)))print(t5.reshape((4,6)))#transfer to one-dimentionalprint(t5.flatten())print("*"*50)#(3,3,2)和(3,2)是可以计算的
a = np.arange(18)
a = a.reshape((3,3,2))
b = np.arange(6)
b = b.reshape((3,2))print(a)print(b)print(a+b)
import numpy as np
t = np.arange(24).reshape((4,6))print(t)#取行print(t[2])#取连续的多行print(t[1:])#取不连续的多行print(t[[0,2,3]])print(t[[0,2],:])#取列print(t[:,0])#取连续的多列print(t[:,1:])#取不连续的多列print(t[:,[0,2]])#取第2行到第3行,第3列到第5列print(t[1:3,2:5])#取多个不相邻的点#(0,0),(2,1),(2,3)print(t[[0,2,2],[0,1,3]])
numpy中更多的索引方式
import numpy as np
t = np.arange(24).reshape((4,6))print(t)#三元运算符,小于等于10变0,其余为100print(np.where(t<=10,0,100))#clip(),小于3的变3,大于8的变8print(t.clip(3,8))
numpy中的nan和常用统计方法
nan和inf的type是float
两个nan是不相等的
利用2的特性判断nan的个数可以用np.count_nonzero(t!=t)
nan和任何东西计算都是nan
命令
解释
axis = 0, axis = 1
0代表计算列,1代表计算行
sum()
求和
mean()
均值
median()
中值
max()
最大值
min()
最小值
ptp()
最大值与最小值之差
std()
标准差
numpy中填充nan和video数据的练习
import numpy as np
deffill_ndarra(t1):#shape[1] = 4 in this casefor i inrange(t1.shape[1]):
temp_col = t1[:,i]
nan_num = np.count_nonzero(temp_col!=temp_col)#不为0,说明当前这一列中有nanif nan_num !=0:
temp_not_nan_col = temp_col[temp_col == temp_col]#把nan变为均值
temp_col[np.isnan(temp_col)]= temp_not_nan_col.mean()return t1
if __name__ =='__main__':
t1 = np.arange(12).reshape((3,4)).astype("float")
t1[1,2:]= np.nan
print(t1)
t1 = fill_ndarra(t1)print(t1)