模块总结
Posted ztzdhbg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块总结相关的知识,希望对你有一定的参考价值。
模块
1.什么是模块
- 模块是一系列功能的集合体
2.模块的4中形式
- 自定义模块
- 第三方模块
- 内置模块
- 包(把一系列模块组织到一起的文件夹,该文件夹下有一个__init__文件)
3.为什么要用模块
- 用模块或者内置模块是一种拿来主义,可以极大提升开发效率
- 自定义模块,将我们自己的程序中用到的公共功能,写入一个python文件,然后各部分组件可以通过导入的方式来引用自定义功能的模块
4.如何引用模块
import
- import 模块名
- import导入模块发生了3件事:
- 以模块为准创造一个模块的名称空间
- 执行模块对应的文件,将执行过程中产生的名字都丢到名称空间
- 在当前执行文件中拿到一个模块名
- 模块的重复导入会直接引用之前创造好的结果,不会重复执行模块的文件,即重复导入会发生spam=spam=模块名称空间的内存地址
from ....import
- 以模块为准创造一个模块的名称空间
- 执行模块对应的文件,将执行过程中产生的名字丢到模块的名称空间
- 在当前执行文件的名称空间拿到一个名字,该名字直接指向模块的另外一个名字,意味着不用加任何前缀就可以使用
5.模块的搜索路径
内存——》内置----》环境变量sys.path中找
6.包
什么是包
包是模块的一种形式,包的本质就是一个含有.py的文件夹
为什么要有包
正则表达式
.代表任意字符(除了\n)
*前面的字符0到无穷个
+1到无穷个
?前面的字符0到1个
\d是数字
\D非数字
\w数字,字母下划线
\W非数字,字母下划线
\s空格\t\n
\S非空格\t\n
numpy模块
lt1 = [1, 2, 3] # n个元素
lt2 = [4, 5, 6]
lt = []
for i in range(len(lt1)): # O(n)
lt.append(lt1[i] * lt2[i])
print(lt)
import numpy as np # 约定俗成的
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 * arr2)
# gpu --> 图形显卡
# 创建numpy数组 --> 可变
# 一维数组(不在讨论范围内)
arr = np.array([1, 2, 4])
print(type(arr), arr)
# 二维数组(******)
arr = np.array([
[1, 2, 3],
[4, 5, 6]
])
print(arr)
# 三维数组(不在讨论范围内)--》tensorflow
arr3 = np.array([
[[1, 2, 3],
[4, 5, 6]],
[[1, 2, 3],
[4, 5, 6]],
])
print(arr)
# numpy数组的属性
arr = np.array([
[1, 2, 3],
[4, 5, 6]
])
# T 数组的转置(对高维数组而言) --> 行列互换,转置
print(arr, '\n', arr.T)
# dtype 数组元素的数据类型,numpy数组是属于python解释器的;int32/float64属于numpy的
print(arr.dtype)
'''
# 定制化的科学计算机
11111111111111111111111111111111111111111
'''
# size 数组元素的个数
print(arr.size)
# ndim 数组的维数
print(arr.ndim)
print(arr3.ndim)
# shape 数组的维度大小(以元组形式)
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])
print(arr[0, :])
print(arr[:, -2:])
# 逻辑取值
print(arr[arr > 4])
# 赋值
lt = [1, 2, 3]
lt[:] = [0, 0, 0]
print(lt)
arr = np.array([
[1, 2, 3],
[4, 5, 6]
])
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)) # 默认以列合并 # 0表示列,1表示行
# 通过函数创建numpy数组
print(np.ones((2, 3)))
print(np.zeros((2, 3)))
print(np.eye(3, 3))
print(np.linspace(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))
# 矩阵运算--点乘
arr1 = np.array([
[1, 2, 3],
[4, 5, 6]
])
arr2 = np.array([
[1, 2],
[4, 5],
[6, 7]
])
# 2* 3 3*2
print(np.dot(arr1, arr2))
# 求逆
arr = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
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)
print(np.random.random((3, 4)))
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)))
matplotlib模块
# 条形图
# from matplotlib import pyplot as plt # 约定俗成
# from matplotlib.font_manager import FontProperties # 修改字体
#
# font = FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
#
# plt.style.use('ggplot') # 设置背景
#
# clas = ['3班', '4班', '5班', '6班']
# students = [50, 55, 45, 60]
# clas_index = range(len(clas))
#
# # [0,1,2,3] [50,55,45,60]
# plt.bar(clas_index,students,color='darkblue')
#
# plt.xlabel('学生',fontproperties=font)
# plt.ylabel('学生人数',fontproperties=font)
# plt.title('班级-学生人数',fontproperties=font,fontsize=20,fontweight=25)
# plt.xticks(clas_index,clas,fontproperties=font)
#
# plt.show()
# # 直方图
# 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')
#
# x1 = np.random.randn(10000)
#
# x2 = np.random.randn(10000)
#
# fig = plt.figure() # 生成一张画布
# ax1 = fig.add_subplot(1, 2, 1) # 1行2列取第一个
# ax2 = fig.add_subplot(1, 2, 2)
#
# ax1.hist(x1, bins=50,color='darkblue')
# ax2.hist(x2, bins=50,color='y')
#
# fig.suptitle('两个正太分布',fontproperties=font,fontsize=20)
# ax1.set_title('x1的正太分布',fontproperties=font) # 加子标题
# ax2.set_title('x2的正太分布',fontproperties=font)
# plt.show()
# 折线图
#
# 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')
#
# np.random.seed(10)
# x1 = np.random.randn(40).cumsum()
# x2 = np.random.randn(40).cumsum()
# x3 = np.random.randn(40).cumsum()
# x4 = np.random.randn(40).cumsum()
#
# plt.plot(x1, c='r', linestyle='-', marker='o', label='红圆线')
# plt.plot(x2, color='y', linestyle='--', marker='*', label='黄虚线')
# plt.plot(x3, color='b', linestyle='-.', marker='s', label='蓝方线')
# plt.plot(x4, color='black', linestyle=':', marker='s', label='黑方线')
# plt.legend(loc='best', prop=font) # 显示label
# plt.show()
# 散点图+直线图
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()
以上是关于模块总结的主要内容,如果未能解决你的问题,请参考以下文章