1.numpy模块:
用来做数据分析,对numpy数组(既有行又有列)--矩阵进行科学运算
#为什么要用numpy lt1[1,2,3] #n个元素 lt2[4,5,6] lt=[] for i in range(len(lt1)): lt.append(lt1[i]*lt2[i]) print(lt) 运行结果: [4, 10, 18] #此方法得到新列表[4,10,18]比较复杂
创建numpy数组(可变):numpy数组即numpy的ndarray对象,创建numpy数组就是把一个列表传入np.array()方法
import numpy as np arr1=np.array([1,2,3]) arr2=np.array([4,5,6]) print(arr1*arr2) 运行结果: [ 4 10 18]
import numpy as np arr1=np.array([1,2,3]) arr2=np.array([4,5,6]) print(arr1*arr2) #一维数组 print(np.array([1,2,3])) #二位数组 arr=np.array([ [1,2,3], [4,5,6] ]) print(arr) #三维数组 arr3=np.array([ [[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]] ]) print(arr3) #T 数组的转置(对高维数组而言)--》行列互转 print(arr,'\n',arr.T) #dtype 数组元素的数据类型,numpy数组是属于Python解释器的;int32/float64属于numpy的 print(arr.dtype) #size 数组元素的个数 print(arr.size) #ndim 数组元素的维度 print(arr.ndim) print(arr3.ndim) #shape 数组的维度大小(以元组形式) print(arr.shape) #(2,3)-->两行三列 print(arr.shape[0]) print(arr.shape[1]) #astype 类型转换 arr=arr.astype(np.float64) print(arr) #切片numpy数组 lt=[1,2,3] print(lt[:]) arr=np.array([ [1,2,3], [4,5,6] ]) print(arr[:,:]) #行,列都拿出来 print(arr[0,0]) #只拿出位置[0,0]的元素 print(arr[0,:]) #拿出第一行全部列的数 print(arr[:,-2:]) #拿出全部行倒数第二列和最后列的数 #逻辑取值 print(arr[arr>4]) # 赋值 lt=[1,2,3] lt[:]=[0,0,0] print(lt) arr[0,0]=0 print(arr) arr[0,:]=0 print(arr) arr[:,:]=0 print(arr) # 数组的合并 arr1=np.array([ [1,2,3], [4,5,6] ]) arr2=np.array([ [7,8,9], ['a','b','c'] ]) print(np.hstack((arr1,arr2))) print(np.vstack((arr1,arr2))) print(np.concatenate((arr1,arr2),axis=1)) #默认以列合并,axis=0表示以列合并,axis=1表示以行合并 #通过函数创建numpy数组 print(np.ones((2,3))) #2行3列都是1 print(np.zeros((2,3))) #2行3列都是0 print(np.eye(3,3)) #右斜线都是1--》单位矩阵 print(np.linspace(1,100,10)) #构造一个等差数列,取头也取尾,从1,100,取10个数,第三个参数为数组长度 print(np.arange(2,10)) #顾头不顾尾 arr1=np.zeros((1,12)) print(arr1.reshape((3,4))) #重构形状 #numpy数组运算 #+-*/ arr1=np.ones((3,4))*4 print(arr1) #numpy数组运算函数 print(np.sin(arr1)) # 矩阵运算--点乘 # numpy数组的点乘必须满足第一个numpy数组的列数等于第二个numpy数组的行数,即m∗n⋅n∗m=m∗m。 arr1=np.array([ [1,2,3], [4,5,6] ]) arr2=np.array([ [1,2], [3,4], [5,6] ]) #2*3.3*2=2*2 print(np.dot(arr1,arr2)) #求逆 arr=np.array([[1,2,3],[4,5,6],[7,8,9]]) print(arr) # print(np.linalg.inv(arr)) #numpy数组数学和统计方法: print(np.sum(arr[0,:])) #numpy.random生成随机数(*****) print(np.random.rand(3,4)) print(np.random.random((3,4))) np.random.seed(1) s=np.random.RandomState(1) print(s.random((3,4))) arr=np.array([[1,2,3],[4,5,6],[9,8,9]]) np.random.shuffle(arr) print(arr) #第一行和最后一行换序 #针对一维 print(np.random.choice([1,2,3],1)) #针对某一个范围 print(np.random.randint(1,100,(3,4)))
2.matplotlib模块:画图
from matplotlib import pyplot as plt from matplotlib.font_manager import FontProperties font=FontProperties(fname='C:\Windows\Fonts\msyh.ttf') #修改背景色 plt.style.use('ggplot') classes=['3班','4班','5班','6班'] classes_index=range(len(classes)) print(list(classes_index)) 运行结果: [0, 1, 2, 3] # 散点图+直线图 import numpy as np from matplotlib import pyplot as plt # 约定俗成 from matplotlib.font_manager import FontProperties # 修改字体 font = FontProperties(fname='C:\Windows\Fonts\simsun.ttc') plt.style.use('ggplot') fig = plt.figure() ax1 = fig.add_subplot(1, 2, 1) ax2 = fig.add_subplot(1, 2, 2) x = np.arange(20) y = x ** 2 x2 = np.arange(20) y2 = x2 ax1.scatter(x, y, c='r', label='红') ax1.scatter(x2, y2, c='b', label='蓝') ax2.plot(x, y) ax2.plot(x2, y2) fig.suptitle('两张图', fontproperties=font, fontsize=15) ax1.set_title('散点图', fontproperties=font) ax2.set_title('折线图', fontproperties=font) ax1.legend(prop=font) plt.show()
3.名称空间
定义:存储变量名与变量间绑定关系的空间;
1.内置名称空间:存Python自带的名字,如,int,float,len。
生命周期:在解释器启动时候生效,解释器关闭时候失效。
2.全局名称空间:如x(变量名),func(函数名),lt(列表名)。
生命周期:文件执行时生效,执行完失效。
3.局部名称空间:存放函数调用期间,函数体产生的名字。
生命周期:文件执行时函数调用期间生效,函数执行结束后失效。
执行顺序:内置-->全局-->局部
查找顺序与执行顺序相反。
4.json模块
json 序列化能够达到跨平台传输交互数据的目的。
dic={'a':1,'b':2} res=json.dumps(dic) print(res) #运行结果:{"a": 1, "b": 2}
json串中没有单引号,C语言里字符串用单引号只能存一个字符,双引号可存多个字符。