Numpy的21个常用知识点

前言

有些萌新还在使用Pycharm进行Numpy等的学习,个人建议不要偷懒,下载anaconda,使用Jupyter Notebook进行探索性学习。不明白他们之间关系的可以看以下文章。

https://blog.csdn.net/suic009/article/details/122803865?spm=1001.2014.3001.5502

当我们在Jupyter Notebook中执行import numpy未发生报错时,说明下载成功。

不成功的记得在编译器中pip install numpy 或者conda install numpy,注意环境变量和下载位置。

当然也可以查看其版本:

Numpy的21个常用知识点

(小白ps:as的作用是给其起个别名;version,这样形式的一般都是使用的这个类或者对象内部的一些属性方法如__name__、sizeof()等。)

Jupyter提词器下载:

提前退出anaconda,打开anaconda prompt输入以下命令:

pip install jupyter_contrib_nbextensions -i https://pypi.mirrors.ustc.edu.cn/simple
jupyter contrib nbextension install –user
pip install –user jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable –user

再次进入jupyter notebook多了以下选项,点击进入

Numpy的21个常用知识点

取消勾选,选中Hinterland

Numpy的21个常用知识点

一、Numpy与Python用于数组计算的性能对比

首先我们以一个需求进行分析:

  • 数组A是1~N数字的平方
  • 数组B是1~N数字的立方
  • 实现两个数组的加法

对比使用Numpy和原生Python的性能对比

对于Python:

def python_sum(n):
    """ Python实现数组的加法
    @param n:数组的长度
"""
    a = [i**2 for i in range(n)] # 生成第一个数组
    b = [i**3 for i in range(n)] # 生成第二个数组
    c = []
    for i in range(n):
        c.append(a[i] + b[i])
    return c

对于使用Numpy:

def numpy_sum(n):
    """ numpy实现数组的加法
    @param n:数组的长度
"""
    a = np.arange(n) ** 2 # 0 - n-1 每个数平方
    b = np.arange(n) ** 3
    return a+b # 结果元素与上方python相同。

我们分别对python_sum和numpy_sum传入1K,1W,10W、100W、1000W次对比运行时间:

%timeit python_sum(n)
%timeit numpy_sum(n)

将结果打包在一起,得到如下(记得统一时间单位,这里统一微秒。):

pytime = [432,4.69*1000,51.9*1000,533*1000,5.42*1000*1000]
nptime = [5.63,31.1,282,5.16*1000,52.3*1000]

我们引用后面学到的Pandas将其转变为DataFrame形式的二维表格:

Numpy的21个常用知识点

此时我们得到df。使用后面学到的matplotlib进行画图:

Numpy的21个常用知识点

Numpy的21个常用知识点

至于其为什么这么高效,除了内部的一些优化操作更加便捷以外,其数据类型更接近C语言。如Python中一个int类型占28个字节(24个来自于int封装对象,4个字节来自真正的int),而在numpy中一个int类型默认只占4字节。

anaconda中还有很多强大的功能,这些都离不开C语言,我们可以看到在ananconda的安装目录有存有MinGW文件。

二、Numpy的核心array

array对象的背景:

  • Numpy的核心数据结构,就叫做array就是数组,array对象可以是一维数组,也可以是多维数组;
  • Python的List也可以实现相同的功能,但是array比List的优点在于性能好、包含数组元数据信息、大量的便捷函数;
  • Numpy成为Scipy、Pandas、Scikit-Learn、Tensorflow、PaddlePaddle等框架的”通用底层语言”
  • Numpy的array和Python的List的一个区别,是 它元素必须都是同一种数据类型,比如都是数字int类型,这也是Numpy高性能的一个原因;

array本身的属性

  • shape:返回一个元组,表示array的维度
  • ndim:一个数字,表示array的维度的数目
  • size:一个数字,表示array中所有数据元素的数目
  • dtype:array中元素的数据类型

创建array的方法

  • 从Python的列表List和嵌套列表创建array
  • 使用预定函数arange、ones/ones_like、zeros/zeros_like、empty/empty_like、full/full_like、eye等函数创建
  • 生成随机数的np.random模块构建

array本身支持的大量操作和函数

  • 直接逐元素的加减乘除等算数操作
  • 更好用的面向多维的数组索引
  • 求sum/mean等聚合函数
  • 线性代数函数,比如求解逆矩阵、求解方程组

2.1 使用list创建一维array和二维array

Numpy的21个常用知识点

2.2 数组array的属性

Array.shape 查看数组的形状

Numpy的21个常用知识点

Array.ndim 查看数组的维度

Numpy的21个常用知识点

Array.size 查看数组中元素的个数

Numpy的21个常用知识点

Array.dtype 查看数组中元素的类型

Numpy的21个常用知识点

Array.itemsize 查看单个元素所占字节数

Numpy的21个常用知识点

Array.nbytes 查看数组中所有元素所占字节数

Numpy的21个常用知识点

再次提醒,为保证高效率的计算,数组中的元素会统一类型。

如arr = [1,2.0,’3′] 元素类型会全部转变为object字符类型。没有object的话其次才是浮点型。

2.3 常用的array生成函数

以下除了arrange和random,基本都是xx:生成xx类型数组;xx_like(a)模仿数组a生成xx类型数组。

使用arange创建数字序列

arange([start,] stop[, step,], dtype=None)

Numpy的21个常用知识点

使用ones创建全是1的数组

np.ones(shape, dtype=None, order=’C’)

shape : int or tuple of ints
Shape of the new array, e.g., (2, 3) or 2.

Numpy的21个常用知识点

使用ones_like创建形状相同的数组

ones_like(a, dtype=float, order=’C’)

Numpy的21个常用知识点

使用zeros创建全是0的数组
np.zeros(shape, dtype=None, order=’C’)

Numpy的21个常用知识点

使用zeros_like创建形状相同的数组
np.zeros_like(a, dtype=None)

Numpy的21个常用知识点

使用empty创建全是0的数组
empty(shape, dtype=float, order=’C’)
注意:数据是未初始化的,里面的值可能是随机值不要用

Numpy的21个常用知识点

使用empty_like创建形状相同的数组
empty_like(prototype, dtype=None)

Numpy的21个常用知识点

使用full创建指定值的数组
np.full(shape, fill_value, dtype=None, order=’C’)

Numpy的21个常用知识点

使用full_like创建形状相同的数组
np.full_like(a, fill_value, dtype=None)

Numpy的21个常用知识点

使用random模块生成随机数的数组

randn(d0, d1, …, dn) 随机数会在后面讲解

Numpy的21个常用知识点

2.4 array本身支持大量操作和函数

这里先稍做展示,后面会经常用到。

比如这样生成一个二维数组:

Numpy的21个常用知识点

运算:

Numpy的21个常用知识点

三、给数组排序

Numpy给数组排序的三个方法:

  • numpy.sort:返回排序后数组的拷贝,即不改变本身。
  • array.sort:原地排序数组而不是返回拷贝,即改变本身。
  • numpy.argsort:间接排序,返回的是排序后的数字索引

3个方法都支持一个参数kind,可以是以下一个值:

  • quicksort:快速排序,平均O(nlogn),不稳定情况
  • mergesort:归并排序,平均O(nlogn),稳定排序
  • heapsort:堆排序,平均O(nlogn),不稳定排序
  • stable:稳定排序

3.1 np.sort排序

Numpy的21个常用知识点

3.2 array.sort排序

Numpy的21个常用知识点

即np.sort不改变操作的数组返回一个新数组,array.sort改变操作的数组。

个人喜欢用np.sort(),就算需要改变数组本身时,直接以arr = np.sort(arr)这种形式写就行了,要会灵活运用。

3.3 np.argsort 返回的是有序数字的索引

Numpy的21个常用知识点

3.4 Python原生sorted与np.sort对比

首先我们都知道python的列表里有一个.sort方法,这个方法是list独有的且也只能操作list。对于list.sort()它没有返回值改变list本身,要求内部类型统一否则会报错。

对于sorted(list)它的局限反而没那么大,还可以对字典等根据某个键、值进行排序。

但这些排序的内部都是基于冒泡排序完成的。而我们的np.sort则是快速排序。

Numpy的21个常用知识点

Numpy的21个常用知识点

四、Numpy常用random函数

常用如下:

Numpy的21个常用知识点

1. rand(d0, d1, …, dn)

返回数据在[0, 1)之间,具有均匀分布

Numpy的21个常用知识点

2. randn(d0, d1, …, dn)

返回数据具有标准正态分布(均值0,方差1)

Numpy的21个常用知识点

3. randint(low[, high, size, dtype])

生成随机整数,包含low,不包含high
如果high不指定,则从[0, low)中生成数字

(ps:在python中random.randint(a,b) 是包含b的)

Numpy的21个常用知识点

4. random([size])

生成[0.0, 1.0)的随机数

Numpy的21个常用知识点

5. choice(a[, size, replace, p])

a是一维数组,从它里面生成随机结果

Numpy的21个常用知识点

6. shuffle(x)

把一个数组x进行随机排列

Numpy的21个常用知识点

7. permutation(x)

把一个数组x进行随机排列,或者数字的全排列

Numpy的21个常用知识点

8. normal([loc, scale, size])

按照平均值loc和方差scale生成高斯分布的数字

Numpy的21个常用知识点

9. uniform([low, high, size])

在[low, high)之间生成均匀分布的数字

Numpy的21个常用知识点

实例:对数组加入随机噪声

Numpy的21个常用知识点

Numpy的21个常用知识点

五、Numpy对数组按索引查询

三种索引方法:

  • 基础索引
  • 神奇索引
  • 布尔索引

5.1 基础索引

对于一维数组,和list一样,这里略。

对于二维数组,我们用行坐标和列坐标进行定位:

X[行,列] 其中行列可以是数字坐标,也可以是类似切片类型的数据。列可以不写,此时只对行操作。

Numpy的21个常用知识点

与列相关:

Numpy的21个常用知识点

我们可以取切片进行多个数据的修改:

Numpy的21个常用知识点

5.2 神奇索引

我们前面用数字当索引,其实也可以用数组。

数字索引返回单个数据,数字切片索引返回从哪到哪的数据。而神奇索引返回数组对应下几个的值。

Numpy的21个常用知识点

实例:获取数组中最大的前N个数字

Numpy的21个常用知识点

Numpy的21个常用知识点

5.3 布尔索引

根据True或False返回对应的数据。

Numpy的21个常用知识点

对于二维:

Numpy的21个常用知识点

还可以使用一些条件组合:

Numpy的21个常用知识点

六、Numpy中的数学统计函数

1、Numpy有哪些数学函数:

函数名说明np.sum所有元素的和np.prod所有元素的乘积np.cumsum元素的累积加和np.cumprod元素的累积乘积np.min最小值np.max最大值np.percentile0-100百分位数np.quantile0-1分位数np.median中位数np.average加权平均,参数可以指定weightsnp.mean平均值np.std标准差np.var方差

2、怎样实现按不同的axis计算

以上函数,都有一个参数叫做axis用于指定计算轴为行还是列,如果不指定,那么会计算所有元素的结果

3、实例:机器学习将数据进行标准化

A = (A – mean(A, axis=0)) / std(A, axis=0)

6.1 Numpy中的数学统计函数

Numpy的21个常用知识点

Numpy的21个常用知识点

6.2 Numpy的axis参数用途

Numpy的21个常用知识点

6.3 机器学习将数据标准化

Numpy的21个常用知识点

Numpy的21个常用知识点

七、Numpy计算数组中满足条件的个数

需求:有一个非常大的数组比如1亿个数字,求出里面数字小于5000的数字数目

  1. 使用numpy的random模块生成1亿个数字

Numpy的21个常用知识点
  1. 使用Python原生语法实现

Numpy的21个常用知识点
  1. 使用Numpy向量化操作实现

Numpy的21个常用知识点
  1. 时间对比

Numpy的21个常用知识点

八、给数组增加维度的三种方法

背景:
很多数据计算都是二维或三维的,对于一维的数据输入为了形状匹配,经常需升维变成二维

需要:
在不改变数据的情况下,添加数组维度;(注意观察这个例子,维度变了,但数据不变)
原始数组:一维数组arr=[1,2,3,4],其shape是(4, ),取值分别为arr[0],arr[1],arr[2],arr[3]
变形数组:二维数组arr[[1,2,3,4]],其shape实(1,4), 取值分别为a[0,0],a[0,1],a[0,2],a[0,3]

实操:
经常需要在纸上手绘数组的形状,来查看不同数组是否形状匹配,是否需要升维降维

3种方法:

  • np.newaxis:关键字,使用索引的语法给数组添加维度
  • np.expand_dims(arr, axis):方法,和np.newaxis实现一样的功能,给arr在axis位置添加维度
  • np.reshape(a, newshape):方法,给一个维度设置为1完成升维

Numpy的21个常用知识点

方法1:np.newaxis关键字

Numpy的21个常用知识点

方法2 :np.expand_dims方法

Numpy的21个常用知识点

方法3:np.reshape方法

Numpy的21个常用知识点

九、Numpy实现K折交叉验证的数据划分

背景:K折交叉验证

为什么需要这个?
在机器学习中,因为如下原因,使用K折交叉验证能更好评估模型效果:
1. 样本量不充足,划分了训练集和测试集后,训练数据更少;
2. 训练集和测试集的不同划分,可能会导致不同的模型性能结果;

K折验证是什么
K折验证(K-fold validtion)将数据划分为大小相同的K个分区。
对每个分区i,在剩余的K-1个分区上训练模型,然后在分区i上评估模型。
最终分数等于K个分数的平均值,使用平均值来消除训练集和测试集的划分影响;

Numpy的21个常用知识点

1. 模拟构造样本集合

Numpy的21个常用知识点

2. 使用Numpy实现K次划分

Numpy的21个常用知识点

结果如下:

Numpy的21个常用知识点

十、Numpy数组合并操作

背景:在给机器学习准备数据的过程中,经常需要进行不同来源的数据合并的操作。

两类场景:
1. 给已有的数据添加多行,比如增添一些样本数据进去;
2. 给已有的数据添加多列,比如增添一些特征进去;

以下操作均可以实现数组合并:

  • np.concatenate(array_list, axis=0/1):沿着指定axis进行数组的合并
  • np.vstack或者np.row_stack(array_list):垂直vertically、按行row wise进行数据合并
  • np.hstack或者np.column_stack(array_list):水平horizontally、按列column wise进行数据合并

  • 添加多行

Numpy的21个常用知识点

2. 添加多列

Numpy的21个常用知识点

十一、数组的乘法

按照两个相乘数组A和B的维度不同,分为以下乘法:

  1. 数字与一维/二维数组相乘;
  2. 一维数组与一维数组相乘;
  3. 二维数组与一维数组相乘;
  4. 二维数组与二维数组相乘;

numpy有以下乘法函数:

  1. *符号或者np.multiply:逐元素乘法,对应位置的元素相乘,要求shape相同
  2. @符号或者np.matmul:矩阵乘法,形状要求满足(n,k),(k,m)->(n,m)
  3. np.dot:点积乘法

解释:点积,也叫内积,也叫数量积
两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为:
a·b=a1b1+a2b2+……+anbn。

1. 数字与数组相乘

Numpy的21个常用知识点

2. 一维数组与一维数组相乘

Numpy的21个常用知识点

3 . 二维数组和一维数组相乘

Numpy的21个常用知识点
  1. 二维数组与二维数组相乘

Numpy的21个常用知识点

十二、Numpy中广播的概念

广播:
简单理解为用于不同大小数组的二元通用函数(加、减、乘等)的一组规则

广播的规则:
1. 如果两个数组的维度数dim不相同,那么小维度数组的形状将会在左边补1
2. 如果shape的维度不匹配,但是有维度是1,那么可以扩展维度是1的维度匹配另一个数组;
3. 如果shape的维度不匹配,但是没有任何一个维度是1,则匹配失败引发错误;

1. 二维数组加一维数组

Numpy的21个常用知识点

2 .两个数组均需要广播

Numpy的21个常用知识点

3. 不匹配的例子

Numpy的21个常用知识点

十三、Numpy求解线性方程组

对于Ax=b,已知A和b,怎么算出x?

求解:

Numpy的21个常用知识点

验证:

Numpy的21个常用知识点

十四、Numpy实现SVD矩阵分解

Numpy的21个常用知识点

从分量还原矩阵

Numpy的21个常用知识点

十五、Numpy实现多项式曲线拟合

问题定义:
对于一堆数据点(x, y),能否只根据这些数据,找出一个函数,使得函数画出来的曲线和原始数据曲线尽量匹配?

多项式拟合问题:
任何可微连续的函数,都可以用一个N次多项式来估计,而比N次幂更高阶的部分为无穷小可以忽略不计

3次多项式即:a$x^3$ + b$x^2$ + cx + d
比如我们可以让sin(x) 约等于 a$x^3$ + b$x^2$ + cx + d

1. 构造原始数据

Numpy的21个常用知识点

2. 使用Numpy拟合

Numpy的21个常用知识点

十六、使用Matplotlib实现可视化绘图

可以直接将Numpy的数组传给Matplotlib实现可视化绘图:

  • 曲线图
  • 饼图
  • 柱状图
  • 直方图

1. 绘制正弦曲线

Numpy的21个常用知识点

2. 绘制饼图

Numpy的21个常用知识点

3. 柱状图

Numpy的21个常用知识点

4. 直方图

Numpy的21个常用知识点

十七、Numpy实现逆矩阵求解线性方程组

对于这样的线性方程组:

  • x + y + z = 6
  • 2y + 5z = -4
  • 2x + 5y – z = 27

可以表示成矩阵的形式:

Numpy的21个常用知识点

用公式可以表示为:Ax=b,其中A是矩阵,x和b都是列向量

逆矩阵(inverse matrix)的定义:
设A是数域上的一个n阶矩阵,若存在另一个n阶矩阵B,使得: AB=BA=E ,则我们称B是A的逆矩阵,而A则被称为可逆矩阵。注:E为单位矩阵。

使用逆矩阵求解线性方程组的方法:
两边都乘以$A^{-1}$,变成$A^{-1}$Ax=$A^{-1}$b,因为任何矩阵乘以单位矩阵都是自身,所以x=$A^{-1}$b

1. 求解逆矩阵

Numpy的21个常用知识点

Numpy的21个常用知识点

3. 验证线性方程组

Numpy的21个常用知识点

十八、Numpy将数组写到文件

Numpy怎样将数组读写到文件

本文档介绍的是Numpy以自己内建二进制的方式,将数组写出到文件,以及从文件加载数组;

如果是文本、表格类数据,一般使用pandas这个类库做加载和处理,不用numpy

几个方法:
1. np.load(filename):从.npy或者.npz文件中加载numpy数组
如果文件后缀是.npy返回单个数组,如果文件后缀是.npz返回多个数组的字典
2. np.save(filename, arr):将单个numpy数组保存到.npy文件中
3. np.savez(filename, arra=arra, arrb=arrb):将多个numpy数组保存到.npz未压缩的文件格式中
4. np.savez_compressed(filename, arra=arra, arrb=arrb):将多个numpy数组保存到.npz压缩的文件格式中

.npy和.npz都是二进制格式文件,用纯文本编辑器打开都是乱码

1. 使用np.save和np.load保存和加载单个数组

Numpy的21个常用知识点

2. 使用np.savez和np.load保存和加载多个数组

Numpy的21个常用知识点

3. 使用np.savez_compressed和np.load保存和加载多个数组到压缩格式文件

Numpy的21个常用知识点

十九、Numpy的结构化数组

一般情况下,Numpy中的数组都是同样的数据类型,比如int、float;
这也是Numpy性能高效的原因,在内存中紧凑存储,读取非常快;

但是Numpy也可以记录异构数组,比如下面的数据:

姓名年龄体重小王3080.5小李2870.3小天2978.6

1. 正常的Numpy数组的dtype值只有一个类型

Numpy的21个常用知识点

2. 怎样使用Numpy表达异构数据

Numpy的21个常用知识点

3. 针对异构数组的查询和操作

使用列表的方式查询一行

Numpy的21个常用知识点

使用字典的方式查询一列

Numpy的21个常用知识点

按条件查询

Numpy的21个常用知识点

对单列做逐元素计算

Numpy的21个常用知识点

最后的一言:
* 对于这种每列类型不同的”异构数据”,Pandas更擅长处理;
* 但我们还要学习一下Numpy结构化数组,不一定会使用它,但要能读懂别人的代码

二十、Numpy与Pandas数据的相互转换

Pandas是在Numpy基础上建立的非常流行的数据分析类库;
提供了强大针对异构、表格类型数据的处理与分析能力。

本次介绍Numpy和Pandas的转换方法:

  • Numpy数组怎样输入给Pandas的Series、DataFrame;
  • Pandas的Series、DataFrame怎样转换成Numpy的数组

Numpy的21个常用知识点

将Numpy数组转换成Pandas的数据结构

Numpy的21个常用知识点

Numpy的21个常用知识点

将Pandas的数据结构转换成Numpy数组

  • 方法1:.values()
  • 方法2:.to_numpy()

用途:
比如Scikit-Learn的模型输入需要的是Numpy的数组
可以使用Pandas对原始数据做大量的处理后,将结果数据转换成Numpy数组作为输入

Numpy的21个常用知识点

Numpy的21个常用知识点

二十一、Numpy数据输入给Sklearn实现模型训练

Numpy的数组怎样与sklearn模型交互,包括训练测试集拆分、输入给模型、评估模型、模型预估对于大家自己的任务,可以提前处理成这样的Numpy格式,然后输入给sklearn模型

import numpy as np
使用sklearn自带的数据集,这些数据集都是Numpy的形式
我们自己的数据,也可以处理成这种格式,然后就可以输入给模型
from sklearn import datasets
用train_test_split可以拆分训练集和测试集
from sklearn.model_selection import train_test_split
使用LinearRegression训练线性回归模型
from sklearn.linear_model import LinearRegression

1. 加载波斯顿房价数据集

Numpy的21个常用知识点

2. 拆分训练集和测试集

Numpy的21个常用知识点

3. 训练线性回归模型

Numpy的21个常用知识点

4. 评估模型和使用模型

Numpy的21个常用知识点

Original: https://blog.csdn.net/suic009/article/details/122872632
Author: 老师我作业忘带了
Title: Numpy的21个常用知识点

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/759491/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 13.外星人

    1.回顾项目:重构代码(添加一个结束游戏的快捷键Q),本章涉及游戏功能如下。 1.屏幕左上角添加一个外星人,指定合适的边距;2.根据第一个外星人和屏幕尺寸计算屏幕需要容纳多少个外星…

    Python 2023年9月25日
    057
  • [IOT安全][分享] 从带内到带外——智能系统的脆弱性体系演变

    从带内到带外——智能系统的脆弱性体系演变 – 知乎 (zhihu.com) posted @2022-07-02 11:06 JsuBaron 阅读(28 ) 评论()…

    Python 2023年6月12日
    094
  • scrapy mysql异常处理_scrapy–异步存mysql

    scrapy是一个异步的爬虫框架、异步解决的很大的问题就是io方面的操作,当我们爬虫请求到数据后,进行存储(io)的过程,也是需要被处理为异步的。 当然,我们同步的代码也是可以进行…

    Python 2023年10月5日
    037
  • matplotlib 中文问题

    matplotlib 是基于 python 的著名可视化图表库。经常用来配合其他数据分析工具使用,将分析的结果可视化。​ 但是,matplotlib 默认是不支持中文的,中文显示成…

    Python 2023年5月24日
    062
  • pytest-在测试用例中编写和上报断言

    pytest支持在测试用例中编写和上报断言 def f(): return 3 * 3 *3 def test_function(): assert f() == 4 执行结果如下…

    Python 2023年9月13日
    040
  • 教你用python爬取美女照片,未成年不能学

    又到每天Python小技巧分享的时候了,今天给大家分享的是怎么样去爬取清纯小姐姐照片(没有人会拒绝美女吧,小声说),这篇文章好像有点刺激,未成年的小伙伴就不要进来了。快来看看这些清…

    Python 2023年11月2日
    036
  • 聊一聊装饰者模式

    是你,还是你,一切都有你!—— 装饰者模式 一、概述 装饰者模式(Decorator Pattern)允许向一个现有的对象扩展新的功能,同时不改变其结构。主要解决直接继承下因功能的…

    Python 2023年10月14日
    042
  • Python学习记录

    常用的一些模块安装命令 查看已安装的模块 pip list 或 pip3 list pyinstaller 模块 安装打包exe模块 pip install pyinstaller…

    Python 2023年9月19日
    058
  • ExecutorService、Callable、Future实现有返回结果的多线程原理解析

    原创/朱季谦 在并发多线程场景下,存在需要获取各线程的异步执行结果,这时,就可以通过ExecutorService线程池结合Callable、Future来实现。 我们先来写一个简…

    Python 2023年10月21日
    046
  • 操作系统学习笔记12 | 从生磁盘到文件

    下面就是磁盘管理的第3层抽象,从磁盘到文件,上一讲最后留下的盘块号并不符合我们日常使用计算机的习惯,而文件才是我们使用计算机更为常用的方式。这一部分就来细说 第3层抽象:生磁盘到文…

    Python 2023年10月22日
    050
  • go-zero微服务实战系列(三、API定义和表结构设计)

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯…

    Python 2023年8月9日
    065
  • python flask服务器_flask应用部署到服务器

    flask是我学习的第一个python的web框架,在应用flask写完一个应用后,当然是把它部署到我们的服务器上了。 首先,准备我们部署项目所需要的部分 1.完整的flask项目…

    Python 2023年8月14日
    057
  • 一文读懂机器学习分类全流程

    目录 前言 提出问题 一、介绍 1.分类简介 2.imblearn的安装 二、数据加载及预处理 1.加载并查看数据 ①导入Python第三方库 ②调用并查看数据 2.查看数据分布 …

    Python 2023年8月1日
    072
  • 【图像处理笔记】图像分割之聚类和超像素

    【图像处理笔记】总目录 0 引言 大多数分割算法都基于图像灰度值的两个基本性质之一: 不连续性和 相似性。 第一类方法根据灰度的突变(如边缘)将图像分割为多个区域:首先寻找边缘线段…

    Python 2023年10月17日
    058
  • ​打造企业自己代码规范IDEA插件(上)

    ——基于阿里巴巴代码规范插件(P3C) “交流互鉴是文明发展的本质要求。只有同其他文明交流互鉴、取长补短,才能保持旺盛生命活力。” 这说的是文明,但映射到计…

    Python 2023年10月20日
    038
  • 【Python】数据加密解密技术

    Original: https://www.cnblogs.com/123456feng/p/16078805.htmlAuthor: 蚂蚁ailingTitle: 【Python…

    Python 2023年5月24日
    065
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球