当前位置: 首页 > 编程日记 > 正文

Numpy入门教程:07. 随机抽样

背景

什么是 NumPy 呢?

NumPy 这个词来源于两个单词 – NumericalPython。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景:

  • 执行各种数学任务,如:数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于 Python 的 MATLAB 的快速替代。
  • 计算机中的图像表示为多维数字数组。NumPy 提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。
  • 在编写机器学习算法时,需要对矩阵进行各种数值计算。如:矩阵乘法、求逆、换位、加法等。NumPy 数组用于存储训练数据和机器学习模型的参数。

随机抽样

numpy.random 模块对 Python 内置的 random 进行了补充,增加了一些用于高效生成多种概率分布的样本值的函数,如正态分布、泊松分布等。

  • numpy.random.seed(seed=None) Seed the generator.

seed()用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed()值,则每次生成的随机数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。

在对数据进行预处理时,经常加入新的操作或改变处理策略,此时如果伴随着随机操作,最好还是指定唯一的随机种子,避免由于随机的差异对结果产生影响。


离散型随机变量

二项分布

  • numpy.random.binomial(n, p, size=None) Draw samples from a binomial distribution.

表示对一个二项分布进行采样,size表示采样的次数,n表示做了n重伯努利试验,p表示成功的概率,函数的返回值表示n中成功的次数。

【例】野外正在进行9(n=9)口石油勘探井的发掘工作,每一口井能够开发出油的概率是0.1(p=0.1)。请问,最终所有的勘探井都勘探失败的概率?

import numpy as np
import matplotlib.pyplot as plt
from scipy import statsnp.random.seed(20200605)
n = 9
p = 0.1
size = 50000
x = np.random.binomial(n, p, size)
print(np.sum(x == 0) / size)  # 0.3897plt.hist(x)
plt.show()s = stats.binom.pmf(range(10), n, p)
print(np.around(s, 3))
# [0.387 0.387 0.172 0.045 0.007 0.001 0.    0.    0.    0.   ]

【例】模拟投硬币,投2次,请问两次都为正面的概率?

import numpy as np
from scipy import stats
import matplotlib.pyplot as pltnp.random.seed(20200605)
n = 2
p = 0.5
size = 50000
x = np.random.binomial(n, p, size)
print(np.sum(x == 0) / size)  # 0.25154
print(np.sum(x == 1) / size)  # 0.49874
print(np.sum(x == 2) / size)  # 0.24972plt.hist(x, density=True)
plt.show()s = stats.binom.pmf(range(n + 1), n, p)
print(np.around(s, 3))
# [0.25 0.5  0.25]

泊松分布

  • numpy.random.poisson(lam=1.0, size=None) Draw samples from a Poisson distribution.

表示对一个泊松分布进行采样,size表示采样的次数,lam表示一个单位内发生事件的平均值,函数的返回值表示一个单位内事件发生的次数。

【例】假定某航空公司预定票处平均每小时接到42次订票电话,那么10分钟内恰好接到6次电话的概率是多少?

import numpy as np
from scipy import stats
import matplotlib.pyplot as pltnp.random.seed(20200605)
lam = 42 / 6
size = 50000
x = np.random.poisson(lam, size)
print(np.sum(x == 6) / size)  # 0.14988plt.hist(x)
plt.show()x = stats.poisson.pmf(6, lam)
print(x)  # 0.14900277967433773

超几何分布

  • numpy.random.hypergeometric(ngood, nbad, nsample, size=None) Draw samples from a Hypergeometric distribution.

表示对一个超几何分布进行采样,size表示采样的次数,ngood表示总体中具有成功标志的元素个数,nbad表示总体中不具有成功标志的元素个数,ngood+nbad表示总体样本容量,nsample表示抽取元素的次数(小于或等于总体样本容量),函数的返回值表示抽取nsample个元素中具有成功标识的元素个数。

【例】一共20只动物里有7只是狗,抽取12只有3只狗的概率(无放回抽样)。

import numpy as np
from scipy import stats
import matplotlib.pyplot as pltnp.random.seed(20200605)
size = 500000
x = np.random.hypergeometric(ngood=7, nbad=13, nsample=12, size=size)
print(np.sum(x == 3) / size)  # 0.198664plt.hist(x, bins=8)
plt.show()"""
M 为总体容量
n 为总体中具有成功标志的元素的个数
N,k 表示抽取N个元素有k个是成功元素
"""
x = range(8)
s = stats.hypergeom.pmf(k=x, M=20, n=7, N=12)
print(np.round(s, 3))
# [0.    0.004 0.048 0.199 0.358 0.286 0.095 0.01 ]


连续型随机变量

均匀分布

  • numpy.random.uniform(low=0.0, high=1.0, size=None) Draw samples from a uniform distribution.

Samples are uniformly distributed over the half-open interval [low, high) (includes low, but excludes high). In other words, any value within the given interval is equally likely to be drawn by uniform.

【例】在low到high范围内,创建大小为size的均匀分布的随机数。

import numpy as np
import matplotlib.pyplot as plt
from scipy import statsnp.random.seed(20200614)
a = 0
b = 100
size = 50000
x = np.random.uniform(a, b, size=size)
print(np.all(x >= 0))  # True
print(np.all(x < 100))  # True
y = (np.sum(x < 50) - np.sum(x < 10)) / size
print(y)  # 0.40144plt.hist(x, bins=20)
plt.show()a = stats.uniform.cdf(10, 0, 100)
b = stats.uniform.cdf(50, 0, 100)
print(b - a)  # 0.4

作为uniform()的特列,可以得到[0,1)之间的均匀分布的随机数。

  • numpy.random.rand(d0, d1, ..., dn) Random values in a given shape.

Create an array of the given shape and populate it with random samples from a uniform distribution over [0, 1).

【例】根据指定大小产生[0,1)之间均匀分布的随机数。

import numpy as npnp.random.seed(20200614)
print(np.random.rand())
# 0.7594819171852776print(np.random.rand(5))
# [0.75165827 0.16552651 0.0538581  0.46671446 0.89076925]print(np.random.rand(4, 3))
# [[0.10073292 0.14624784 0.40273923]
#  [0.21844459 0.22226682 0.37246217]
#  [0.50334257 0.01714939 0.47780388]
#  [0.08755349 0.86500477 0.70566398]]np.random.seed(20200614)
print(np.random.uniform())  # 0.7594819171852776
print(np.random.uniform(size=5))
# [0.75165827 0.16552651 0.0538581  0.46671446 0.89076925]print(np.random.uniform(size=(4, 3)))
# [[0.10073292 0.14624784 0.40273923]
#  [0.21844459 0.22226682 0.37246217]
#  [0.50334257 0.01714939 0.47780388]
#  [0.08755349 0.86500477 0.70566398]]

作为uniform的另一特例,可以得到[low,high)之间均匀分布的随机整数。

  • numpy.random.randint(low, high=None, size=None, dtype='l') Return random integers from low (inclusive) to high (exclusive).

Return random integers from the “discrete uniform” distribution of the specified dtype in the “half-open” interval [low, high). If high is None (the default), then results are from [0, low).

【例】若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

import numpy as npnp.random.seed(20200614)
x = np.random.randint(2, size=10)
print(x)
# [0 0 0 1 0 1 0 0 0 0]x = np.random.randint(1, size=10)
print(x)
# [0 0 0 0 0 0 0 0 0 0]x = np.random.randint(5, size=(2, 4))
print(x)
# [[3 3 0 1]
#  [1 1 0 1]]x = np.random.randint(1, 10, [3, 4])
print(x)
# [[2 1 7 7]
#  [7 2 4 6]
#  [8 7 2 8]]

正态分布

  • numpy.random.randn(d0, d1, ..., dn) Return a sample (or samples) from the “standard normal” distribution.

【例】根据指定大小产生满足标准正态分布的数组(均值为0,标准差为1)。

import numpy as np
import matplotlib.pyplot as plt
from scipy import statsnp.random.seed(20200614)
size = 50000
x = np.random.randn(size)
y1 = (np.sum(x < 1) - np.sum(x < -1)) / size
y2 = (np.sum(x < 2) - np.sum(x < -2)) / size
y3 = (np.sum(x < 3) - np.sum(x < -3)) / size
print(y1)  # 0.68596
print(y2)  # 0.95456
print(y3)  # 0.99744plt.hist(x, bins=20)
plt.show()y1 = stats.norm.cdf(1) - stats.norm.cdf(-1)
y2 = stats.norm.cdf(2) - stats.norm.cdf(-2)
y3 = stats.norm.cdf(3) - stats.norm.cdf(-3)
print(y1)  # 0.6826894921370859
print(y2)  # 0.9544997361036416
print(y3)  # 0.9973002039367398

还可以指定分布以及所需参数来进行随机,例如高斯分布中的mu和sigma。

  • numpy.random.normal(loc=0.0, scale=1.0, size=None) Draw random samples from a normal (Gaussian) distribution.

normal()为创建均值为 loc(mu),标准差为 scale(sigma),大小为 size 的数组。

sigma * np.random.randn(...) + mu

【例】

import numpy as np
import matplotlib.pyplot as pltnp.random.seed(20200614)
x = 0.5 * np.random.randn(2, 4) + 5
print(x)
# [[5.39654234 5.4088702  5.49104652 4.95817289]
#  [4.31977933 4.76502391 4.70720327 4.36239023]]np.random.seed(20200614)
mu = 5
sigma = 0.5
x = np.random.normal(mu, sigma, (2, 4))
print(x)
# [[5.39654234 5.4088702  5.49104652 4.95817289]
#  [4.31977933 4.76502391 4.70720327 4.36239023]]size = 50000
x = np.random.normal(mu, sigma, size)print(np.mean(x))  # 4.996403463175092
print(np.std(x, ddof=1))  # 0.4986846716715106plt.hist(x, bins=20)
plt.show()

指数分布

  • numpy.random.exponential(scale=1.0, size=None) Draw samples from an exponential distribution.

【例】scale = 1/lambda

import numpy as np
import matplotlib.pyplot as plt
from scipy import statsnp.random.seed(20200614)
lam = 7
size = 50000
x = np.random.exponential(1 / lam, size)
y1 = (np.sum(x < 1 / 7)) / size
y2 = (np.sum(x < 2 / 7)) / size
y3 = (np.sum(x < 3 / 7)) / size
print(y1)  # 0.63218
print(y2)  # 0.86518
print(y3)  # 0.95056plt.hist(x, bins=20)
plt.show()y1 = stats.expon.cdf(1 / 7, scale=1 / lam)
y2 = stats.expon.cdf(2 / 7, scale=1 / lam)
y3 = stats.expon.cdf(3 / 7, scale=1 / lam)
print(y1)  # 0.6321205588285577
print(y2)  # 0.8646647167633873
print(y3)  # 0.950212931632136


其它随机函数

  • numpy.random.choice(a, size=None, replace=True, p=None) Generates a random sample from a given 1-D array.

从序列中获取元素,若a为整数,元素取值从np.range(a)中随机获取;若a为数组,取值从a数组元素中随机获取。该函数还可以控制生成数组中的元素是否重复replace,以及选取元素的概率p

【例】

import numpy as npnp.random.seed(20200614)
x = np.random.choice(10, 3)
print(x)  # [2 0 1]x = np.random.choice(10, 3, p=[0.05, 0, 0.05, 0.9, 0, 0, 0, 0, 0, 0])
print(x)  # [3 2 3]x = np.random.choice(10, 3, replace=False, p=[0.05, 0, 0.05, 0.9, 0, 0, 0, 0, 0, 0])
print(x)  # [3 0 2]aa_milne_arr = ['pooh', 'rabbit', 'piglet', 'Christopher']
x = np.random.choice(aa_milne_arr, 5, p=[0.5, 0.1, 0.1, 0.3])
print(x) # ['pooh' 'rabbit' 'pooh' 'pooh' 'pooh']np.random.seed(20200614)
x = np.random.randint(0, 10, 3)
print(x)  # [2 0 1]

数据一般都是按照采集顺序排列的,但是在机器学习中很多算法都要求数据之间相互独立,所以需要先对数据集进行洗牌操作。

  • numpy.random.shuffle(x) Modify a sequence in-place by shuffling its contents.

This function only shuffles the array along the first axis of a
multi-dimensional array. The order of sub-arrays is changed but
their contents remains the same.

x进行重排序,如果x为多维数组,只沿第 0 轴洗牌,改变原来的数组,输出为None。

【例】洗牌,改变自身内容,打乱顺序。

import numpy as npnp.random.seed(20200614)
x = np.arange(10)
np.random.shuffle(x)
print(x)
# [6 8 7 5 3 9 1 4 0 2]print(np.random.shuffle([1, 4, 9, 12, 15]))
# Nonex = np.arange(20).reshape((5, 4))
print(x)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]
#  [16 17 18 19]]np.random.shuffle(x)
print(x)
# [[ 4  5  6  7]
#  [ 0  1  2  3]
#  [ 8  9 10 11]
#  [16 17 18 19]
#  [12 13 14 15]]
  • numpy.random.permutation(x) Randomly permute a sequence, or return a permuted range.

If x is a multi-dimensional array, it is only shuffled along its first index.

permutation()函数的作用与shuffle()函数相同,可以打乱第0轴的数据,但是它不会改变原来的数组。

【例】

import numpy as npnp.random.seed(20200614)
x = np.arange(10)
y = np.random.permutation(x)
print(y)
# [6 8 7 5 3 9 1 4 0 2]print(np.random.permutation([1, 4, 9, 12, 15]))
# [ 4  1  9 15 12]x = np.arange(20).reshape((5, 4))
print(x)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]
#  [16 17 18 19]]y = np.random.permutation(x)
print(y)
# [[ 8  9 10 11]
#  [ 0  1  2  3]
#  [12 13 14 15]
#  [16 17 18 19]
#  [ 4  5  6  7]]

参考文献

  • https://www.jianshu.com/p/63434ad5ea64

当前活动


我是 终身学习者“老马”,一个长期践行“结伴式学习”理念的 中年大叔

我崇尚分享,渴望成长,于2010年创立了“LSGO软件技术团队”,并加入了国内著名的开源组织“Datawhale”,也是“Dre@mtech”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。

愿我们一起学习,一起进步,相互陪伴,共同成长。

后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:

相关文章:

如何成为一个Android高手

很多Android开发者已经度过了初级、中级&#xff0c;如何成为一个Android高手呢&#xff1f; eoeAndroid就各个级别的程序员应该掌握哪些内容作为下面分类. 一、初级 1. 拥有娴熟的Java基础&#xff0c;理解设计模式&#xff0c;比如OOP语言的工厂模式要懂得. 2. 掌握Android U…

云终端处理器——Atom

由于上周展会的缘故&#xff0c;开始对云终端【I】处理器产生兴趣&#xff0c;接下来在“物理层”【II】来理解下X86-Atom&#xff0c;ARM&#xff0c;MIPS三种处理器&#xff0c;这是第一篇&#xff0c;主Atom Intel公司的官网简单介绍了一句 “英特尔 凌动【III】 处理器&am…

Java培训的学费标准是多少

​ 很多想要进入到互联网行业的小伙伴都会选择java这门编程语言&#xff0c;java编程语言技术在互联网公司是起着非常重要的作用的&#xff0c;那么如今市面上的java培训机构有很多&#xff0c;选择报Java培训的学费标准是多少呢?来看看下面的详细介绍。 ​  Java培训的学费…

Numpy入门教程:08. 集合操作

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

iPhone开发技巧之工具篇(4)--- 使用afconvert转换WAV文件

转载自&#xff1a;http://www.yifeiyang.net/iphone-development-skills-of-tool-papers-4-wav-file-conversion-using-afconvert/ 程序中经常使用 .WAV 的音效文件&#xff0c;虽然可以直接使用它&#xff0c;但是最好转换为 apple 推荐的 .CAF 格式。 这个时候我们就可以使用…

SQLite与pandas

以下链接对SQLite使用方法总结的很棒&#xff1a; http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html 有关利用pandas读写QSLite的内容&#xff0c;可参考以下链接&#xff1a; http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html http:…

零基础学习java,这些书一定要看!

学习java技术除了看视频&#xff0c;看书也是非常重要的&#xff0c;尤其是零基础同学&#xff0c;本文包含学习Java各个阶段的书籍推荐&#xff0c;史上最全&#xff0c;学习Java&#xff0c;没有书籍怎么行&#xff0c;就好比出征没带兵器一个道理&#xff0c;这些书籍整理出…

Numpy入门教程:练习作业01

序言 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

转乱码UTF8和UTF-8网页编码

http://www.lovelucy.info/utf8-vs-utf-8.html#more-794 一、遇到的问题 曾经被字符集间复杂的转换搞怕了&#xff0c;正好新项目要求国际化&#xff0c;需要能够显示多种语言&#xff0c;于是一开始就规定统统使用 UTF-8 编码。 所有代码文件使用 UTF-8 编码存盘MySQL数据库所…

linux管道的执行顺序

最近有个疑问&#xff0c;netstat -antup|head -500 类似这条命令中&#xff0c;是netstat 执行完然后截取前500条记录还是&#xff0c;netstat 与head 并行执行&#xff0c;netstat 执行完500条就不再继续&#xff1f; 最终答案由酷学园darkdanger大大提供&#xff1a; 唔…

为什么学习Python数据分析

为什么学习Python数据分析?这是很多人都比较关注的一个问题&#xff0c;Python编程语言近几年在互联网行业是非常火爆的&#xff0c;尤其是在人工智能这一领域&#xff0c;它会大大的提高我们的工作效率等等&#xff0c;具体来看看下面的详细介绍就知道了。 为什么学习Python数…

Python自动化开发学习6

引子 假设我们要在我们的程序里表示狗&#xff0c;狗有如下属性&#xff1a;名字、品种、颜色。那么可以先定义一个模板&#xff0c;然后调用这个模板生成各种狗。 def dog(name,d_type,color):data {name:name,d_type:d_type,color:color}return data d1 dog(小七,拉布拉多,…

Numpy入门教程:09. 输入和输出

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

第二语言综合征

前些天在看一本书&#xff0c;温伯格的《理解专业程序员》&#xff0c;其中提到有的程序员得了第二语言综合征——在学习第三、第四门语言的时候很容易&#xff0c;但是学习第二门简直能要了他们的命。我当时就确定我患了这个毛病&#xff0c;因为我一直想了解Java语言&#xf…

Python文件操作:finally子句的使用

finally子句与try-except语句连用时&#xff0c;无论try-except是否捕获到异常&#xff0c;finally子句后的代码都要执行&#xff0c;其语法格式如下&#xff1a; try: 可能出错的语句 ......except: 出错后的执行语句finally: 无论是否出错都会执行的语句 Python在处理文件时&…

Numpy入门教程:练习作业02

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

PowerShell 导入 SQL Server 的 PS 模块

接触过UNIX或者Linux 的朋友都知道此类系统有着功能强大、无所不能的壳程序,称之为Shell。微软公司于2006年第四季度正式发布PowerShell&#xff0c;它的出现标志着, 微软公司向服务器领域迈出了重要的一步, 不仅提供简便的图形化操作界面&#xff0c;同时提供类似于Unix, Linu…

ARM嵌入式操作系统启动

任何一个操作系统的启动都至少关注两个方面&#xff1a;&#xff11;&#xff0c;程序运行栈的初始化。&#xff12;&#xff0c;处理器外设的初始化。 在&#xff21;&#xff32;&#xff2d;&#xff56;&#xff16;以及以前的体系结构中&#xff0c;定义了七种模式分别为&…

Html5 aside标签的用法和作用

aside元素用来定义当前页面或者文章的附属信息部分&#xff0c;它可以包含与当前页面或主要内容相关的引用、侧边栏、广告、导航条等其他类似的有别于主要内容的部分。 aside元素的用法主要分为两种。 ● 被包含在article元素内作为主要内容的附属信息。 ● 在article元素之外使…

Numpy入门教程:10. 统计相关

背景 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

Windows 7+Code::Blocks+wxWidgets实录(一)

环境配置篇 玩过Linux的人应该对Code::Blocks和wxWidgets并不陌生。 Code::Blocks是一款非常有名的代码编辑器&#xff0c;在linux下用不惯vim的话&#xff0c;这是个不错的选择。但千万不要把它和编译器混淆&#xff0c;CB本身并没有独立编译程序的功能&#xff0c;需要调用系…

技巧:两部解决U盘安装windows 7

第一步&#xff1a;准备一个4G的U盘并使用disk part 工具制作成引导盘1、在运行中输入cmd 回车2、在黑色的命令提示符界面中输入Diskpart3、插入U盘 并输入List Disk查看4、输入Select Disk 1 &#xff08;选择你的U盘所在的标识&#xff09;5、输入clean 清除旧的信息6、输入c…

报Java面授班有哪些优势

​ java技术在互联网行业的高速发展&#xff0c;让很多人都开始学习java技术&#xff0c;大家都想知道学习java技术面授班好还是网络班好&#xff0c;小编觉得当然是面授班比较好&#xff0c;下面小编就带大家来详细的了解一下报Java面授班有哪些优势? ​  报Java面授班有哪…

刻意练习:Python基础 -- Task13. datetime模块详解

datetime模块 datetime 是 Python 中处理日期的标准模块&#xff0c;它提供了 4 种对日期和时间进行处理的类&#xff1a;datetime、date、time 和 timedelta。 datetime类 class datetime(date):def __init__(self, year, month, day, hour, minute, second, microsecond, t…

关于java和c的选择结构和循环结构

java和c在这些结构上确实没区别。 另学会一个小技巧&#xff0c;在编辑界面选中段落之后按tab可以整体后移选中的段落&#xff0c;再按shifttab可以将选中的段落前移。转载于:https://www.cnblogs.com/hloli/archive/2012/03/15/2398675.html

从控制器到驱动器的WD——硬盘巨头启示录之西数篇

WD&#xff08;Western Digital&#xff0c;西部数据&#xff09;公司创立的时间比希捷公司还早近10年&#xff0c;但作为硬盘驱动器供应商的历史可不算长。1970年4月23日&#xff0c;一家名为General Digital&#xff08;通用数字&#xff09;的公司诞生了&#xff0c;其最初是…

java程序员入门先学什么开发者工具

学习java编程语言&#xff0c;那么开发工具是肯定少不了的&#xff0c;程序员入门基础中开发工具是一定要学会的&#xff0c;可以帮助开发者们提高开发效率、更优雅的写代码。由于开发者涉及的技术领域众多&#xff0c;以后端开发者的视角盘点平时可能用得到的工具&#xff0c;…

Numpy入门教程:11. 时间日期和时间增量

序言 什么是 NumPy 呢&#xff1f; NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库&#xff0c;可以帮助程序员轻松地进行数值计算&#xff0c;通常应用于以下场景&#xff1a; 执行各种数学任务&#xff0c;如&#xff1a;数值积分、微分、…

C#事件的发送方和接收方(订阅方)

C#事件的发送方和接收方&#xff08;订阅方&#xff09;基于Windows的应用程序也是基于消息的&#xff0c;Windows使用预定义消息与应用程序通讯。.NET Framework将Windows消息封装在事件中&#xff0c;可以把事件作为对象之间的通讯介质。事件发送方&#xff1a;发送事件的对象…

后台管理界面模版

http://www.cssmoban.com/cssthemes/houtaimoban/index_3.shtml转载于:https://www.cnblogs.com/hellojesson/p/7805516.html