9.29 模块
作者:互联网
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语言里字符串用单引号只能存一个字符,双引号可存多个字符。
标签:arr,数组,9.29,np,模块,print,array,numpy 来源: https://www.cnblogs.com/lidandanaa/p/11643964.html