python数学建模之Numpy、Pandas学习与应用介绍

news2024/12/23 12:56:21

文章目录

    • Numpy学习
      • 1 Numpy 介绍与应用
        • 1-1Numpy是什么
      • 2 NumPy Ndarray 对象
      • 3 Numpy 数据类型
      • 4 Numpy 数组属性
    • Pandas学习
      • 1 pandas新增数据列
      • 2 Pandas数据统计函数
      • 3 Pandas对缺失值的处理
    • 总结
      • 关于Python技术储备
        • 一、Python所有方向的学习路线
        • 二、Python基础学习视频
        • 三、精品Python学习书籍
        • 四、Python工具包+项目源码合集
        • ①Python工具包
        • ②Python实战案例
        • ③Python小游戏源码
        • 五、面试资料
        • 六、Python兼职渠道


在这里插入图片描述

Numpy学习

1 Numpy 介绍与应用

1-1Numpy是什么

NumPy 是一个运行速度非常快的数学库,一个开源的的python科学计算库,主要用于数组、矩阵计算,包含:

一个强大的N维数组对象 ndarray广播功能函数整合 C/C++/Fortran 代码的工具线性代数、傅里叶变换、随机数生成等功能 1-2 为什么选择Numpy

对于同样的数值计算任务,使用Numpy比直接编写原生python代码的优点有:

代码更简洁:

Numpy直接以数组、矩阵为粒度计算并且支撑大量的数学函数,而Python需要用for循环从底层实现

性能更高效:

Numpy的数组存储效率和输入输出计算性能,比Python使用List或者嵌套List好很多

**注意:**Numpy的数据存储和Python原生的List是不一样的
加上Numpy的大部分代码都是C语言实现的,这是Numpy比纯Python代码高效的原因

相关学习、代码如下:须提前安装好Numpy、pandas和matplotlib

**Numpy终端安装命令:**pip install numpy
**Pandas终端安装命令:**pip install pandas
**Matplotlib终端安装过命令:**pip install matplotlib

526

\# @Software : PyCharm
# Numpy是Python各种数据科学类库的基础库
# 比如:Pandas,Scipy,Scikit\_Learn等
# Numpy应用:
'''
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用, 这种组合广泛用于替代 MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
SciPy 是一个开源的 Python 算法库和数学工具包。
SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。
Matplotlib 是 Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它为利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+ 向应用程序嵌入式绘图提供了应用程序接口(API)。

'''
# 安装 NumPy 最简单的方法就是使用 pip 工具:
# pip3 install --user numpy scipy matplotlib
# --user 选项可以设置只安装在当前的用户下,而不是写入到系统目录。
# 默认情况使用国外线路,国外太慢,我们使用清华的镜像就可以:
# pip install numpy scipy matplotlib -i.csv https://pypi.tuna.tsinghua.edu.cn/simple
# 这种pip安装是一种最简单、最轻量级的方法,当然,这里的前提是有Python包管理器
# 如若不行,可以安装Anaconda【目前应用较广泛】,这是一个开源的Python发行版
# 安装Anaconda地址:https://www.anaconda.com/
# 安装验证
# 测试是否安装成功
from numpy import \*     # 导入 numpy 库
print(eye(4))           # 生成对角矩阵
# 查看版本:
import numpy as np
print(np.\_\_version\_\_)
# 实现2个数组的加法:
# 1-原生Python实现
def Py\_sum(n):
    a = \[i\*\*2 for i in range(n)\]
    b = \[i\*\*3 for i in range(n)\]
    # 创建一个空列表,便于后续存储
    ab\_sum = \[\]
    for i in range(n):
        # 将a、b中对应的元素相加
        ab\_sum.append(a\[i\]+b\[i\])
    return ab\_sum
# 调用实现函数
print(Py\_sum(10))
# 2-Numpy实现:
def np\_sum(n):
    c = np.arange(n) \*\* 2
    d = np.arange(n) \*\* 3
    return c+d
print(np\_sum(10))
# 易看出使用Numpy代码简洁且运行效率快
# 测试1000,10W,以及100W的运行时间
# 做绘图对比:
import pandas as pd
# 输入数据
py\_times = \[1.72\*1000, 202\*1000, 1.92\*1000\]
np\_times = \[18.8, 14.9\*1000, 17.8\*10000\]

# 创建Pandas的DataFrame类型数据
ch\_lxw = pd.DataFrame({
    'py\_times': py\_times,
    'np\_times': np\_times    # 可加逗号
})
print(ch\_lxw)
import matplotlib.pyplot as plt
# 线性图
print(ch\_lxw.plot())
# 柱状图
print(ch\_lxw.plot.bar())
# 简易箱线图
print(ch\_lxw.boxplot)

plt.show()

线性图运行效果如下:

63

柱状图运行效果如下:

528

2 NumPy Ndarray 对象

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

ndarray 对象是用于存放同类型元素的多维数组,其中的每个元素在内存中都有相同存储大小的区域。ndarray 对象采用了数组的索引机制,将数组中的每个元素映射到内存块上,并且按照一定的布局对内存块进行排序(行或列)

ndarray 内部由以下内容组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针;
  • 数据类型或 dtype,描述在数组中的固定大小值的格子;
  • 一个表示数组形状(shape)的元组,表示各维度大小的元组;
  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

相关学习、代码如下:

'''
创建一个 ndarray 只需调用 NumPy 的 array 函数即可:
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
参数说明:

名称	描述
object	表示数组或嵌套的数列
dtype	表示数组元素的数据类型,可选
copy	表示对象是否需要复制,可选
order	创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
subok	默认返回一个与基类类型一致的数组
ndmin	指定生成数组的最小维度
'''
# ndarray 对象由计算机内存的连续一维部分组成,并结合索引模式,将每个元素映射到内存块中的一个位置。
# 内存块以行顺序(C样式)或列顺序(FORTRAN或MatLab风格,即前述的F样式)来保存元素

# 学好Numpy,便于后期对Pandas的数据处理
# 1:一维
import numpy as np
lxw = np.array(\[5, 2, 0\])
print(lxw)
print()
# 2: 多于一个维度
import numpy as np
lxw2 = np.array(\[\[1, 5, 9\], \[5, 2, 0\]\])
print(lxw2)
print()
# 3: 最小维度
import numpy as np
lxw3 = np.array(\[5, 2, 0, 1, 3, 1, 4\], ndmin=2)     # ndmin: 指定生成数组的最小维度
print(lxw3)
print()
# 4: dtype参数
import numpy as np
lxw4 = np.array(\[3, 3, 4, 4\], dtype=complex)        # dtype: 数组元素的数据类型\[complex 复数】
print(lxw4)

3 Numpy 数据类型

numpy 支持的数据类型比 Python 内置的类型要多很多,基本上可以和 C 语言的数据类型对应上,其中部分类型对应为 Python 内置的类型.

常用 NumPy 基本类型:

名称 描述
bool_ :【布尔型数据类型(True 或者 False)】
int_ : 【默认的整数类型(类似于 C 语言中的 long,int32 或 int64)】
intc :【与 C 的 int 类型一样,一般是 int32 或 int 64】
intp :【用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64)】
int8 :【字节(-128 to 127)】
int16 :【整数(-32768 to 32767)】
int32 :【整数(-2147483648 to 2147483647)】
int64 :【整数(-9223372036854775808 to 9223372036854775807)】
uint8 :【无符号整数(0 to 255)】
uint16 :【无符号整数(0 to 65535)】
uint32 :【无符号整数(0 to 4294967295)】
uint64 :【无符号整数(0 to 18446744073709551615)】
float_ float64 :【类型的简写】
float16 :【半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位】
float32 :【单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位】
float64 :【双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位】
complex_ complex128: 【类型的简写,即 128 位复数】
complex64 :【复数,表示双 32 位浮点数(实数部分和虚数部分)】
complex128 :【复数,表示双 64 位浮点数(实数部分和虚数部分)】

相关学习、代码如下:

'''
# numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括 np.bool\_,np.int32,np.float32,等等。
'''
# Numpy 类型对象:
'''
dtype 对象是使用以下语法构造的:

numpy.dtype(object, align, copy)

object - 要转换为的数据类型对象
align - 如果为 true,填充字段使其类似 C 的结构体。
copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用

'''
# 1: 使用标量类型
import numpy as np
lxw = np.dtype(np.int32)
print(lxw)
print()
# 2: int8, int16, int32, int64 四种数据类型可以使用字符串 'i1', 'i2','i4','i8' 代替
import numpy as np
lxw2 = np.dtype('i8')       # int64
print(lxw2)
print()
# 3: 字节顺序标注
import numpy as np
lxw3 = np.dtype('<i4')      # int32
print(lxw3)
print()
# 4: 首先创建结构化数据类型
import numpy as np
lxw4 = np.dtype(\[('age', np.int8)\])     # i1
print(lxw4)
print()
# 5: 将数据类型应用于 ndarray 对象
import numpy as np
lxw5 = np.dtype(\[('age', np.int32)\])
a = np.array(\[(10,), (20,), (30,)\], dtype=lxw5)
print(a)
print()
# 6: 类型字段名可以用于存取实际的 age 列
import numpy as np
lxw6 = np.dtype(\[('age', np.int64)\])
a = np.array(\[(10,), (20,), (30,)\], dtype=lxw6)
print(a\['age'\])
print()
# 7: 定义一个结构化数据类型 student,包含字符串字段 name,整数字段 age,及浮点字段 marks,并将这个 dtype 应用到 ndarray 对象
import numpy as np
student = np.dtype(\[('name', 'S20'), ('age', 'i2'), ('marks', 'f4')\])
print(student)      # 运行结果:\[('name', 'S20'), ('age', '<i2'), ('marks', '<f4')\]
print()
# 8:
import numpy as np
student2 = np.dtype(\[('name','S20'), ('age', 'i1'), ('marks', 'f4')\])
lxw = np.array(\[('lxw', 21, 52), ('cw', 22, 58)\], dtype=student2)
print(lxw)          # 运行结果:\[(b'lxw', 21, 52.) (b'cw', 22, 58.)\]
# 每个内建类型都有一个唯一定义它的字符代码,如下:
'''
字符	对应类型
b	布尔型
i.csv	(有符号) 整型
u	无符号整型 integer
f	浮点型
c	复数浮点型
m	timedelta(时间间隔)
M	datetime(日期时间)
O	(Python) 对象
S, a	(byte-)字符串
U	Unicode
V	原始数据 (void)
'''

4 Numpy 数组属性

在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。

比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。

相关代码学习、如下:

\# NumPy 的数组中比较重要 ndarray 对象属性有:
'''
属性	            说明
ndarray.ndim	秩,即轴的数量或维度的数量
ndarray.shape	数组的维度,对于矩阵,n 行 m 列
ndarray.size	数组元素的总个数,相当于 .shape 中 n\*m 的值
ndarray.dtype	ndarray 对象的元素类型
ndarray.itemsize	ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags	ndarray 对象的内存信息
ndarray.real	ndarray元素的实部
ndarray.imag	ndarray 元素的虚部
ndarray.data	包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

'''
# ndarray.ndim
# ndarray.ndim 用于返回数组的维数,等于秩。
import numpy as np
lxw = np.arange(36)
print(lxw.ndim)             # a 现只有一个维度
# 现调整其大小
a = lxw.reshape(2, 6, 3)    # 现在拥有三个维度
print(a.ndim)
print()
# ndarray.shape
# ndarray.shape 表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 ndim 属性(秩)。比如,一个二维数组,其维度表示"行数"和"列数"。
# ndarray.shape 也可以用于调整数组大小。
import numpy as np
lxw2 = np.array(\[\[169, 175, 165\], \[52, 55, 50\]\])
print(lxw2.shape)   # shape: 数组的维度
print()
# 调整数组大小:
import numpy as np
lxw3 = np.array(\[\[123, 234, 345\], \[456, 567, 789\]\])
lxw3.shape = (3, 2)
print(lxw3)
print()
# NumPy 也提供了 reshape 函数来调整数组大小:
import numpy as np
lxw4 = np.array(\[\[23, 543, 65\], \[32, 54, 76\]\])
c = lxw4.reshape(2, 3)  # reshape: 调整数组大小
print(c)
print()
# ndarray.itemsize
# ndarray.itemsize 以字节的形式返回数组中每一个元素的大小。

# 例如,一个元素类型为 float64 的数组 itemsize 属性值为 8(float64 占用 64 个 bits,
# 每个字节长度为 8,所以 64/8,占用 8 个字节),又如,一个元素类型为 complex32 的数组 item 属性为 4(32/8)
import numpy as np
# 数组的 dtype 为 int8(一个字节)
x = np.array(\[1, 2, 3, 4, 5\], dtype=np.int8)
print(x.itemsize)
# 数组的dtypy现在为float64(八个字节)
y = np.array(\[1, 2, 3, 4, 5\], dtype=np.float64)
print(y.itemsize)   # itemsize: 占用字节个数
# 拓展:
# 整体转化为整数型
print(np.array(\[3.5, 6.6, 8.9\], dtype=int))
# 设置copy参数,默认为True
a = np.array(\[2, 5, 6, 8, 9\])
b = np.array(a)                     # 复制a
print(b)                            # 控制台打印b
print(f'a: {id(a)}, b: {id(b)}')     # 可打印出a和b的内存地址
print('='\*20)
# 类似于列表的引用赋值
b = a
print(f'a: {id(a)}, b: {id(b)}')
# 创建一个矩阵
lxw5 = np.mat(\[1, 2, 3, 4, 5\])
print(type(lxw5))   # 矩阵类型: <class 'numpy.matrix'>
# 复制出副本,并保持原类型
yy = np.array(lxw5, subok=True)
print(type(yy))
# 只复制副本,不管其类型
by = np.array(lxw5, subok=False)    # False: 使用数组的数据类型
print(type(by))
print(id(yy), id(by))
print('='\*20)
# 使用数组的copy()方法:
c = np.array(\[2, 5, 6, 2\])
cp = c.copy()
print(id(c), id(cp))
print()
# ndarray.flags
'''
ndarray.flags 返回 ndarray 对象的内存信息,包含以下属性:
属性	描述
C\_CONTIGUOUS (C)	数据是在一个单一的C风格的连续段中
F\_CONTIGUOUS (F)	数据是在一个单一的Fortran风格的连续段中
OWNDATA (O)	数组拥有它所使用的内存或从另一个对象中借用它
WRITEABLE (W)	数据区域可以被写入,将该值设置为 False,则数据为只读
ALIGNED (A)	数据和所有元素都适当地对齐到硬件上
UPDATEIFCOPY (U)	这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新

'''
import numpy as np
lxw4 = np.array(\[1, 3, 5, 6, 7\])
print(lxw4.flags)   # flags: 其内存信息

Pandas学习

在这里插入图片描述

当然,做这些的前提是首先把文件准备好

文件准备:

文件太长,故只截取了部分,当然,此文件可自行弄类似的也可以!

在这里插入图片描述

1 pandas新增数据列

在进行数据分析时,经常需要按照一定条件创造新的数据列,然后再进一步分析

  • 直接赋值
  • df.apply()方法
  • df.assign()方法
  • 按条件进行分组分别赋值
\# 1:
import pandas as pd

# 读取数据
lxw = pd.read\_csv('sites.csv')

# print(lxw.head())
df = pd.DataFrame(lxw)
# print(df)
df\['lrl'\] = df\['lrl'\].map(lambda x: x.rstrip('%'))
# print(df)
df.loc\[:, 'jf'\] = df\['yye'\] - df\['sku\_cost\_prc'\]
# 返回的是Series
# print(df.head())
# 2:
def get\_cha(n):
    if n\['yye'\] > 5:
        return '高价'
    elif n\['yye'\] < 2:
        return '低价'
    else:
        return '正常价'
df.loc\[:, 'yye\_type'\] = df.apply(get\_cha, axis=1)
# print(df.head())
print(df\['yye\_type'\].value\_counts())
# 3:
# 可同时添加多个新列
print(df.assign(
    yye\_bh=lambda x: x\['yye'\]\*2-3,
    sl\_zj=lambda x: x\['sku\_cnt'\]\*6
).head(10))
# 4:

# 按条件先选择数据,然后对这部分数据赋值新列
# 先创建空列
df\['zyye\_type'\] = ''

df.loc\[df\['yye'\] - df\['sku\_cnt'\]>8, 'zyye\_type'\] = '高'
df.loc\[df\['yye'\] - df\['sku\_cnt'\] <= 8, 'zyye\_type'\] = '低'
print(df.head())

下面分别是每个小问对应运行效果:

1:

在这里插入图片描述

2:

在这里插入图片描述

3:

在这里插入图片描述

4:

在这里插入图片描述

2 Pandas数据统计函数

\# Pandas数据统计函数
'''
1-汇总类统计
2-唯一去重和按值计数
3-相关系数和协方差
'''
import pandas as pd
lxw = pd.read\_csv('nba.csv')
# print(lxw.head(3))
# 1:
# 一下子提取所有数字列统计结果
print(lxw.describe())
# 查看单个Series的数据
print(lxw\['Age'\].mean())
# 年龄最大
print(lxw\['Age'\].max())
# 体重最轻
print(lxw\['Weight'\].min())
# 2:
# 2-1 唯一性去重【一般不用于数值项,而是枚举、分类项】
print(lxw\['Height'\].unique())
print(lxw\['Team'\].unique())
# 2-2 按值计算
print(lxw\['Age'\].value\_counts())
print(lxw\['Team'\].value\_counts())
# 3:
# 应用:股票涨跌、产品销量波动等等
'''
对于两个变量X、Y:
1-协方差:衡量同向程度程度,如果协方差为正,说明X、Y同向变化,协方差越大说明同向程度越高;
        如果协方差为负,说明X、Y反向运动,协方差越小说明方向程度越高。
2-相关系数:衡量相似度程度,当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,
            当相关系数为-1,说明两个变化时的反向相似度最大。
             
'''
# 协方差矩阵:
print(lxw.cov())
# 相关系数矩阵:
print(lxw.corr())
# 单独查看年龄和体重的相关系数
print(lxw\['Age'\].corr(lxw\['Weight'\]))
# Age和Salary的相关系数
print(lxw\['Age'\].corr(lxw\['Salary'\]))
# 注意看括号内的相减
print(lxw\['Age'\].corr(lxw\['Salary'\]-lxw\['Weight'\]))

1:

在这里插入图片描述

2-1:

在这里插入图片描述

部分2-2:

在这里插入图片描述

3:

在这里插入图片描述

3 Pandas对缺失值的处理

特殊Excel的读取、清洗、处理:

\# Pandas对缺失值的处理
'''
函数用法:
1-isnull和notnull: 检测是否有控制,可用于dataframe和series
2-dropna: 丢弃、删除缺失值
2-1 axis: 删除行还是列,{0 or 'index', 1 or 'columns'}, default()
2-2 how: 如果等于any, 则任何值都为空,都删除;如果等于all所有值都为空,才删除
2-3 inplace: 如果为True,则修改当前dataframe,否则返回新的dataframe
2-4 value: 用于填充的值,可以是单个值,或者字典(key是列名,value是值)
2-5 method: 等于ffill使用前一个不为空的值填充forword fill;等于bfill使用后一个不为空的值填充backword fill
2-6 axis: 按行还是按列填充,{0 or "index", 1 or "columns"}
2-7 inplace: 如果为True则修改当前dataframe,否则返回新的dataframe

'''
# 特殊Excel的读取、清洗、处理
import pandas as pd
# 1: 读取excel时,忽略前几个空行
stu = pd.read\_excel("Score表.xlsx", skiprows=14)     # skiprows: 控制在几行以下
print(stu)
# 2: 检测空值
print(stu.isnull())
print(stu\['成绩'\].isnull())
print(stu\['成绩'\].notnull())
# 筛选没有空成绩的所有行
print(stu.loc\[stu\['成绩'\].notnull(), :\])
# 3: 删除全是空值的列:
# axis: 删除行还是列,{0 or 'index', 1 or 'columns'}, default()
# how: 如果等于any, 则任何值都为空,都删除;如果等于all所有值都为空,才删除
# inplace: 如果为True则修改当前dataframe,否则返回新的dataframe
stu.dropna(axis="columns",  how="all", inplace=True)
print(stu)
# 4: 删除全是空值的行:
stu.dropna(axis="index", how="all", inplace=True)
print(stu)
# 5: 将成绩列为空的填充为0分:
stu.fillna({"成绩": 0})
print(stu)
# 同上:
stu.loc\[:, '成绩'\] = stu\['成绩'\].fillna(0)
print(stu)
# 6: 将姓名的缺失值填充【使用前面的有效值填充,用ffill: forward fill】
stu.loc\[:, '姓名'\] = stu\['姓名'\].fillna(method='ffill')
print(stu)
# 7: 将清洗好的Excel保存:
stu.to\_excel("Score成绩\_clean.xlsx", index=False)

1:

在这里插入图片描述

2

在这里插入图片描述

![在这里插入图片描述

在这里插入图片描述

3:

在这里插入图片描述

4:

在这里插入图片描述

5:

在这里插入图片描述

6:

在这里插入图片描述

总结

今天我学习了处理python数据分析的另一个库——Numpy,刚开始接触这个库的时候真的感觉没什么意思,可学的越深入一点,越觉得越有意思,当然,昨天的那个库也挺不错的,主要是Numpy这个是学Pandas的基础,得打好基础,当然也不会落下Pandas的学习!


关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python基础学习视频

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python工具包+项目源码合集
①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

六、Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1251451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java核心知识点整理大全14-笔记

Java核心知识点整理大全-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全4-笔记-CSDN博客 Java核心知识点整理大全5-笔记-CSDN博客 Java核心知识点整理大全6…

linux系统中select函数的用法实现

前言&#xff1a; select机制已经被很多人都讲解过&#xff0c;select使用起来也不是特别难&#xff0c;为什么还要花时间再次讲解select机制&#xff1f; 在回答这个问题之前&#xff0c;我们先问一下自己&#xff0c;是否有足够的信心保证在使用select编程时不出错&#xf…

yolov5利用yaml文件生成模型

一、yolov5的yaml文件构成 yaml文件如下图 不论是backbone还是head&#xff0c;每一行都由一个列表组成&#xff0c;列表里面有四个元素&#xff0c;另外&#xff0c;还有两个参数depth和width。在搭建模型的时候&#xff0c;会利用每一行的信息生成一个模块&#xff0c;并按照…

Word文档排版常见问题汇总(公式图表乱码、Visio插图空白区域)

Word文档排版常见问题汇总 1. 公式图表乱码2. Visio图插入Word中&#xff0c;图中空白区域大3. visio 画图插入Word 中只显示{代码}&#xff0c;不显示图片4.部分期刊要求 行连续编码&#xff08;The manuscript text must be line-numbered continuously&#xff09;5. 要求图…

cocos浏览器测试正常,但到了抖音、微信小游戏事件无响应、无法操作的bug原因及解决办法

本篇文章主要讲解&#xff1a;cocos游戏引擎&#xff0c;浏览器测试时弹出框好好的&#xff0c;无任何报错&#xff0c;构建项目到抖音、微信小游戏时无法弹出弹出框&#xff0c;但又无报错的问题原因及解决办法。 日期&#xff1a;2023年11月25日 作者&#xff1a;任聪聪 问题…

移动家庭云电脑只能24小时不关机

DD转换Linux也不行&#xff0c;北京地区套餐为家庭云电脑畅享版月包&#xff0c;客服回复目前只能设置24小时不关机。 24小时必须关机这是很严重的问题&#xff0c;不能随时保持在线连接&#xff0c;也没有公网IP。

一篇文章完成Hbase入门

文章目录 一、简介1、数据模型结构2、物理存储结构3、数据模型4、基本架构 二、安装1、下载解压安装包2、修改配置文件3、启动服务(单机、集群)4、配置高可用(HA) 三、命令行操作1、建表2、新增/更新数据3、查看表数据4、删除数据5、修改默认保存的数据版本 四、架构1、RegionS…

吴恩达《机器学习》10-4-10-5:诊断偏差和方差、正则化和偏差/方差

一、诊断偏差和方差 在机器学习中&#xff0c;诊断偏差和方差是改进模型性能的关键步骤。通过了解这两个概念&#xff0c;能够判断算法的问题究竟是欠拟合还是过拟合&#xff0c;从而有针对性地调整模型。 1. 概念理解 偏差&#xff08;Bias&#xff09;&#xff1a; 表示模…

Springboot3+vue3从0到1开发实战项目(一)

一. 可以在本项目里面自由发挥拓展 二. 知识整合项目使用到的技术 后端开发 &#xff1a; Validation, Mybatis,Redis, Junit,SpringBoot3 &#xff0c;mysql&#xff0c;Swagger, JDK17 &#xff0c;JWT&#xff0c;项目部署 前端开发&#xff1a; Vue3&#xff0c;Vite&am…

RK3568驱动指南|第七篇-设备树-第70章 参考文档:设备树bindings

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

微信公众号快速接入大模型

今天找到一个可以快速将大模型接入公众号的方法&#xff0c;现在跟大家分享一下。 如何让微信公众号接入大模型文案创作能力&#xff0c;实现类似ChatGPT文案创作功能。方法其实很简单&#xff0c;只需打开地址“http://www.botaigc.cn:8900/mpauth”&#xff0c;用微信扫码即可…

5G NSA注册解析及图标显示方案

5G NSA注册解析及图标显示方案 1. NSA注册流程解析1.1 NSA注册流程1.2 NAS消息信元变化1.3 UE能力信元变化1.3.1 第一次UE能力查询1.3.2 后续UE能力查询1.3.3 UE能力过滤器解析 1.4 UE测量配置1.5 SCG添加消息解析1.6 SCG添加成功1.7 Split Bearer承载的建立1.8 NR协议查询索引…

Linux | 重定向 | 文件概念 | 查看文件 | 查看时间 | 查找文件 | zip

Linux | 重定向 | 文件概念 | 查看文件 | 查看时间 | 查找文件 | zip 文章目录 Linux | 重定向 | 文件概念 | 查看文件 | 查看时间 | 查找文件 | zip一、more1.1 输出重定向>和>>1.2 输入重定向< 二、 再谈一切皆文件三、less指令【重要】四、head指令五、tail指令…

长寿秘诀揭秘!7个长寿特征,能占1个都是福!

一项涵盖了约72万人的美国退伍老兵的全面性研究&#xff0c;揭露了有这7个特征的人&#xff0c;更易长寿&#xff0c;寿命甚至可延长20多年。 卡尔伊利诺医学院退伍军人事务部健康科学专家研究指出&#xff0c;在中年以后&#xff0c;有这7个特征的人多数比较长寿&#xff0c;…

人工智能 -- 神经网络

1、什么是神经网络 什么是人工智能&#xff1f;通俗来讲&#xff0c;就是让机器能像人一样思考。这个无需解释太多&#xff0c;因为通过各种科幻电影我们已经对人工智能很熟悉了。大家现在感兴趣的应该是——如何实现人工智能&#xff1f; 从1956年夏季首次提出“人工智能”这…

算法基础之滑动窗口

滑动窗口 主要思想&#xff1a;单调队列 保证队列中下标跨度始终为3个数 q[N]维护数组中元素下标 方便判断窗口大小 #include<iostream>#include<algorithm>using namespace std;const int N1000010;int a[N],q[N];int n,k,hh,tt-1;int main(){cin>>n>…

mysql忘记密码,然后重置

数据库版本8.0.26 只针对以下情况 mysql忘记了密码&#xff0c;但是你navicat之前连接上了 解决方法&#xff1a; 第一步&#xff0c;选中mysql这个数据库&#xff0c;点击新建查询 第二步&#xff1a;重置密码 alter user rootlocalhost IDENTIFIED BY 你的密码; 然后就可…

RK WiFi部分信道在部分地区无法使用的原因

不同国家支持的WiFi信道不一样&#xff0c;需要正确设置wificountrycode 修改路径&#xff1a; device\rockchip\common\BoardConfig.mk 修改内容&#xff1a;androidboot.wificountrycodeXX 该属性会被解析为 ro.boot.wificountrycode framework层会在&#xff1a; framewor…

AutoDL tensorboard实现可视化

1.在自己的代码中&#xff0c;writer SummaryWriter(../tf-logs)&#xff0c;具体位置看自己在哪个路径下 我的云服务器下event保存在这里&#xff0c;程序跑起来之后点开这个文件夹就能看见events 2.在容器实例中选择AutoPanel 3.选择tensorboard打开即可看见 4.出现问题 打…

浅谈电力设备智能无线温度检测系统

安科瑞 华楠 摘要&#xff1a;在长期工作中&#xff0c;由于设备基础变化、温湿度变化、严重超负荷运行、触点氧化等原因造成的电力设备压接不紧&#xff0c;触头接触部分发生改变。终导致接触电阻增大&#xff0c;造成巨大的风险隐患。本系统将通过无线测温的方式&#xff0c…