当前位置: 首页 > news >正文

Lesson5.1---Python 之 NumPy 简介和创建数组

一、NumPy 简介

  • NumPy(Numerical Python)是 Python 的一种开源的数值计算扩展。
  • 这种工具可用来存储和处理大型矩阵,比 Python 自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  • 使用 NumPy 可以方便的使用数据、矩阵进行计算,包含线性代数、傅里叶变化、随机数生成等大量函数。

1. 为什么要使用 NumPy

  • Numpy 是 Python 各种数据科学类库的基础库,比如:Scipy,Scikit-Learn、TensorFlow、pandas等。
  • 对于同样的数值计算任务,使用 NumPy 比直接使用 Python 代码实现有如下优点:
    (1) 代码更简洁:NumPy 直接以数组、矩阵为粒度计算并且支撑大量的数学函数,而 python 需要用 for 循环从底层实现;
    (2) 性能更高效:NumPy 的数组存储效率和输入输出计算性能,比 Python 使用 List 或者嵌套 List 好很多。
  • 这里有两点需要注意需要注意是,其一,Numpy 的数据存储和 Python 原生的 List 是不一样的。
  • 其二,NumPy 的大部分代码都是 C 语言实现的,这是 Numpy 比纯 Python 代码高效的原因。

2. 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,等等。

3. NumPy 数组属性

  • NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。
  • 在 NumPy 中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。
  • 比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。所以一维数组就是 NumPy 中的轴(axis),第一个轴相当于是底层数组,第二个轴是底层数组里的数组。而轴的数量——秩,就是数组的维数。
  • 很多时候可以声明 axis。axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作;axis=1,表示沿着第1轴进行操作,即对每一行进行操作。
  • NumPy 的数组中比较重要 ndarray 对象属性有:
属性说明
ndarray.ndim秩,即轴的数量或维度的数量
ndarray.shape数组的维度,对于矩阵,n 行 m 列
ndarray.size数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtypendarray 对象的元素类型
ndarray.itemsizendarray 对象中每个元素的大小,以字节为单位
ndarray.flagsndarray 对象的内存信息
ndarray.realndarray 元素的实部
ndarray.imagndarray 元素的虚部
ndarray.data包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性
  • NumPy 定义了一个 n 维数组对象,简称 ndarray 对象,它是一个一系列相同类型元素组成的数组集合。数组中的每个元素都占有大小相同的内存块。
  • ndarray 对象采用了数组的索引机制,将数组中的每个元素映射到内存块上,并且按照一定的布局对内存块进行排列(行或列)。

4.NumPy 的 ndarray 对象

在这里插入图片描述

二、numpy.array() 创建数组

1. 基础理论

  • 基本的 ndarray 是使用 NumPy 中的数组函数创建的,如下所示:
numpy.array 
  • 它从任何暴露数组接口的对象,或从返回数组的任何方法创建一个 ndarray。
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
  • 上面的构造器接受以下参数:
参数描述
object表示一个数组序列
dtype可选参数,通过它可以更改数组的数据类型
copy可选参数,当数据源是ndarray时表示数组能否被复制,默认是 True
order可选参数,以哪种内存布局创建数组,有 3 个可选值,分别是 C(行序列)、F(列序列)、A(默认)
subok可选参数,类型为bool值,默认 False。为 True,使用object的内部数据类型;False:使用object数组的数据类型
ndmin可选参数,用于指定数组的维度

2.基础操作演示

  • 在代码编写之前,我们需要先引入 NumPy。
# 注意默认都会给numpy包设置别名为np
import numpy as np
  • NumPy 引入完成后,实现 array 创建数组。
  • 在 array() 函数当中,括号内可以是列表、元组、数组、迭代对象,生成器等。
  • 其中,列表和元组的整体相同,但是列表属于可变序列,它的元素可以随时修改或删除,元组是不可变序列,其中元素不可修改,只能整体替换。

(1) 列表:

np.array([1,2,3,4,5])
#array([1, 2, 3, 4, 5])

(2) 元组:

np.array((1,2,3,4,5))
#array([1, 2, 3, 4, 5])

(3) 数组

a = np.array([1,2,3,4,5]) #创建一个数组
np.array(a)
#array([1, 2, 3, 4, 5])

(4) 迭代对象:

np.array(range(10))
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

(5) 生成器:

np.array([i**2 for i in range(10)])#array([ 0,  1,  4,  9, 16, 25, 36, 49, 64, 81])
  • 当数组内的元素数据类型不相同时,那么数组内哪种数据类型存储的结果最大,就按哪种数据类型进行存储。
  • 如下例子,在数组当中,包含整型,浮点型和字符串,其中字符串的数据类型存储结果最大,因此,数组内的所有元素均按字符串进行存储。
np.array([1,1.5,3,4.5,'5'])
#array(['1', '1.5', '3', '4.5', '5'], dtype='<U32')

(1) 整型:

ar1 = np.array(range(10))   # 整型
ar1
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

(2)浮点型(浮点型的数据存储大于整型的数据存储,因此全部转换为浮点型):

ar2 = np.array([1,2,3.14,4,5])   
ar2
#array([1.  , 2.  , 3.14, 4.  , 5.  ])

(3) 二维数组(嵌套序列(列表,元组均可)):

ar3 = np.array([[1,2,3],('a','b','c')])   
ar3
#array([['1', '2', '3'],
#       ['a', 'b', 'c']], dtype='<U11')

(4) 当二维数组嵌套序列数量不一致:

ar4 = np.array([[1,2,3],('a','b','c','d')])   
ar4
#array([list([1, 2, 3]), ('a', 'b', 'c', 'd')], dtype=object)

上述例子的秩是 1,可以通过 ar4.ndim 进行查看。

3. numpy.array() 参数详解

(1) 设置 dtype 参数,默认自动识别。

a = np.array([1,2,3,4,5])
print(a)
# 设置数组元素类型
has_dtype_a = np.array([1,2,3,4,5],dtype='float')
has_dtype_a
#[1 2 3 4 5]
#array([1., 2., 3., 4., 5.])

如果将浮点型的数据,设置为整形,那么,数组内元素会自动舍弃尾数,转换为整型数据,具体输出如下所示。

np.array([1.1,2.5,3.8,4,5],dtype='int')#array([1, 2, 3, 4, 5])

(2) 设置 copy 参数,默认为 True。
我们设置 a 数组,然后,通过 a 数组复制得出 b 数组,此时,a 数组和 b 数组的地址不相同,创建了新的对象。
那么,对 a 数组和 b 数组的任意修改都不会影响另一个数组的元素。

a = np.array([1,2,3,4,5])
b = np.array(a)
print('a:', id(a), '  b:', id(b))
print('以上看出a和b的内存地址')
b[0] = 10
print(a)
#a: 2066732212352   b: 2066732213152
#以上看出a和b的内存地址
#[1 2 3 4 5]

当我们修改 b 数组的元素时,a 数组不会发生变化。

b[0] = 10
print('a:', a,'  b:', b)
#a: [1 2 3 4 5]   b: [10  2  3  4  5]

当设置 copy 参数为 Fasle 时,不会创建副本,两个变量会指向相同的内容地址,没有创建新的对象。
此时,由于 a 数组和 b 数组指向的是相同的内存地址,因此当修改 b 数组的元素时,a 数组对应的元素会发生变化。

a = np.array([1,2,3,4,5])
b = np.array(a, copy=False)
print('a:', id(a), '  b:', id(b))
print('以上看出a和b的内存地址')
b[0] = 10
print('a:',a,'  b:',b)
#a: 2066732267520   b: 2066732267520
#以上看出a和b的内存地址
#a: [10  2  3  4  5]   b: [10  2  3  4  5]

(3) ndmin 用于指定数组的维度。
将一维数组转换为二维数组。

a = np.array([1,2,3])
print(a)​
a = np.array([1,2,3], ndmin=2)
a​
#[1 2 3]
#array([[1, 2, 3]])

(4) subok 参数,类型为 bool 值,默认 False。为 True 时,使用 object 的内部数据类型;False:使用 object 数组的数据类型。

  • 首先,创建一个 a 矩阵,然后输出 a 矩阵的数据类型,便于后面的比较。
  • 其次,通过 a 矩阵生成 at 和 af 两个数组,at 数组的 subok 参数设置为 True,at 数组的 subok 参数不设置,即默认为 False。
  • 最后,输出 at 数组和 af 数组的数据类型,用于比较观察。
a = np.mat([1,2,3,4])
print(type(a))
​at = np.array(a,subok=True)
af = np.array(a) 
print('at,subok为True:',type(at))
print('af,subok为False:',type(af))
print(id(at),id(a))#<class 'numpy.matrix'>
#at,subok为True: <class 'numpy.matrix'>
#af,subok为False: <class 'numpy.ndarray'>
#2066738151720 2066738151608

书写代码时需要注意的内容:
先定义一个 a 数组。

a = np.array([2,4,3,1])

在定义 b 数组时,如果想复制 a 数组,有如下几种方案:
(1) 使用 np.array()。
(2) 使用数组的 copy() 方法。

b = np.array(a)
print('b = np.array(a):',id(b),id(a))
​c = a.copy()
print('c = a.copy():',id(c),id(a))
#b = np.array(a): 2066731363744 2066731901216
#c = a.copy(): 2066732267520 2066731901216

注意不能直接使用 = 号复制,直接使用 = 号,会使 2 个变量指向相同的内存地址。

三、numpy.arange() 生成区间数组

3.1根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。

numpy.arange(start, stop, step, dtype)

3.2其参数含义如下:

序号参数描述说明
1start起始值,默认为 0
2stop终止值(不包含)
3step步长,默认为 1
4dtype返回 ndarray 的数据类型,如果没有提供,则会使用输入数据的类型

3.2示例

(1)如果只有一个参数,那么起始值就是 0,终止值就是那个参数,步长就是 1。
(2)如果有两个参数,那么,第一个参数就是起始值,第二个参数就是终止值。

np.arange(10)
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

(3)可以使用浮点型数值

np.arange(3.1)
#array([0., 1., 2., 3.])

(4)返回浮点型的,也可以指定类型

x = np.arange(5, dtype =  float)  
x
#array([0., 1., 2., 3., 4.])

(5)设置了起始值、终止值及步长:

  • 起始值是 10,终止值是 20,步长是 2。
np.arange(10,20,2)#array([10, 12, 14, 16, 18])
  • 起始值是 0,终止值是 20,步长是 3。
ar2 = np.arange(0,20,3)
print(ar2)
ar3 = np.arange(20,step=3) #指定传参
ar3
​#[ 0  3  6  9 12 15 18]
#array([ 0,  3,  6,  9, 12, 15, 18])

(6)如果数组太大而无法打印,NumPy 会自动跳过数组的中心部分,并只打印边角。

np.arange(10000)
#array([   0,    1,    2, ..., 9997, 9998, 9999])

四、numpy.linspace() 创建等差数列

4.1返回在间隔 [开始,停止] 上计算的 num 个均匀间隔的样本。数组是一个等差数列构成。

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

4.2其参数含义如下:

序号参数描述说明
1start必填项,序列的起始值
2stop必填项,序列的终止值,如果endpoint为true,该值包含于数列中
3num要生成的等步长的样本数量,默认为50
4endpoint该值为 true 时,数列中包含stop值,反之不包含,默认是True
5baset对数 log 的底数
6dtypendarray 的数据类型

4.3示例

(1)以下例子用到三个参数,设置起始点为 1 ,终止点为 10,数列个数为 10。

a = np.linspace(1,10,10)
a
#array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])

如果,我们将 endpoint 设置为 False,就不会包含 10,此时,默认步长是 50。

a = np.linspace(1,10,endpoint=False)
a
#array([1.  , 1.18, 1.36, 1.54, 1.72, 1.9 , 2.08, 2.26, 2.44, 2.62, 2.8 ,
#       2.98, 3.16, 3.34, 3.52, 3.7 , 3.88, 4.06, 4.24, 4.42, 4.6 , 4.78,
#       4.96, 5.14, 5.32, 5.5 , 5.68, 5.86, 6.04, 6.22, 6.4 , 6.58, 6.76,
#       6.94, 7.12, 7.3 , 7.48, 7.66, 7.84, 8.02, 8.2 , 8.38, 8.56, 8.74,
#       8.92, 9.1 , 9.28, 9.46, 9.64, 9.82])

(2)以下实例用到三个参数,设置起始位置为 2.0,终点为 3.0,数列个数为 5。

ar1 = np.linspace(2.0, 3.0, num=5)
ar1
#array([2.  , 2.25, 2.5 , 2.75, 3.  ])

将参数 endpoint 设置为 False 时,不包含终止值,

ar1 = np.linspace(2.0, 3.0, num=5, endpoint=False)
ar1
#array([2. , 2.2, 2.4, 2.6, 2.8])

设置 retstep 显示计算后的步长

ar1 = np.linspace(2.0,3.0,num=5, retstep=True)
print(ar1)
type(ar1)
#(array([2.  , 2.25, 2.5 , 2.75, 3.  ]), 0.25)
#tuple

将 endpoint 设置为 False,不包含终止值,再设置 retstep 显示计算后的步长

ar1 = np.linspace(2.0,3.0,num=5,endpoint=False,retstep=True)
ar1
#(array([2. , 2.2, 2.4, 2.6, 2.8]), 0.2)

(3)等差数列在线性回归经常作为样本集,例如:生成 x_data,值为 [0, 100] 之间 500 个等差数列数据集合作为样本特征,根据目标线性方程 y=3×x+2y = 3 × x + 2y=3×x+2 ,生成相应的标签集合 y_data

x_data = np.linspace(0,100,500)
x_data

五、numpy.logspace() 创建等比数列

5.1 返回在间隔 [开始,停止] 上计算的 num 个均匀间隔的样本。数组是一个等比数列构成。

np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

5.2其参数含义如下:

序号参数描述说明
1start必填项,序列的起始值
2stop必填项,序列的终止值,如果endpoint为true,该值包含于数列中
3num要生成的等步长的样本数量,默认为50
4endpoint该值为 true 时,数列中包含stop值,反之不包含,默认是True
5baset对数 log 的底数
6dtypendarray 的数据类型

5.3示例

a = np.logspace(0,9,10,base=2)
a
#array([  1.,   2.,   4.,   8.,  16.,  32.,  64., 128., 256., 512.])

上述代码可以理解为 202^{0}20292^{9}29
np.logspace(A,B,C,base=D) 中的参数分别是如下含义:
A:生成数组的起始值为 D 的 A 次方。
B:生成数组的结束值为 D 的 B 次方。
C:总共生成 C 个数。
D:指数型数组的底数为 D,当省略 base=D 时,默认底数为 10。

(1)我们先使用前 3 个参数,将 [1,5] 均匀分成 3 个数,得到 {1,3,5},然后利用第 4 个参数 base=2(默认是 10)使用指数函数可以得到最终输出结果21,23,252^{1},2^{3},2^{5}21,23,25

np.logspace(1,5,3,base=2)
#array([ 2.,  8., 32.])

(2)取得 1 到 2 之间 10 个常用对数

np.logspace(1.0,2.0,num=10)
#array([ 10.        ,  12.91549665,  16.68100537,  21.5443469 ,
#        27.82559402,  35.93813664,  46.41588834,  59.94842503,
#        77.42636827, 100.        ]

上述实际上是 10110^{1}10110210^{2}102

六、numpy.zeros() 创建全零数列

6.1创建指定大小的数组,数组元素以 0 来填充。

numpy.zeros(shape, dtype = float, order = 'C')

6.2其参数含义如下:

序号参数描述说明
1shape数组形状
2dtype数据类型,可选

6.3示例

(1)默认的数据类型是浮点数

np.zeros(5)
#array([0., 0., 0., 0., 0.])

(2)将数据类型设置为整型

np.zeros((5,), dtype = 'int') 
array([0, 0, 0, 0, 0])

(3)生成一个 2 行 2 列的全 0 数组

np.zeros((2,2))
#array([[0., 0.],
#       [0., 0.]])

(4)使用 zeros_like 可以返回具有与给定数组相同的形状和类型的零数组

ar1 = np.array([[1,2,3],[4,5,6]])
np.zeros_like(ar1)
#array([[0, 0, 0],
#       [0, 0, 0]])

七、np.ones() 创建一数列

ar5 = np.ones(9)
ar6 = np.ones((2,3,4))
ar7 = np.ones_like(ar3)
print('ar5:',ar5)
print('ar6:',ar6)
print('ar7:',ar7)
#ar5: [1. 1. 1. 1. 1. 1. 1. 1. 1.]
#ar6: [[[1. 1. 1. 1.]
#  [1. 1. 1. 1.]
#  [1. 1. 1. 1.]]
#
# [[1. 1. 1. 1.]
#  [1. 1. 1. 1.]
#  [1. 1. 1. 1.]]]
#ar7: [1 1 1 1 1 1 1]

相关文章:

Lesson5.1---Python 之 NumPy 简介和创建数组

一、NumPy 简介 NumPy&#xff08;Numerical Python&#xff09;是 Python 的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵&#xff0c;比 Python 自身的嵌套列表&#xff08;nested list structure&#xff09;结构要高效的多&#xff08;该结构也可以用来表示…...

Exchange 2013升级以及域名绑定等若干问题

环境简介Exchange 2013服务器位于ad域中&#xff0c;系统为Windows server 2012 R2&#xff0c;其内部域名为&#xff1a;mail.ad.com一. Exchange客户端无法在浏览器中正常运行在域中部署Exchange服务器后&#xff0c;除了可以通过outlook、foxmail等邮件客户端来使用邮箱功能…...

linux安装jenkins

1. 官网寻找安装方式 进入到jenkins官网&#xff0c;找到对应的下载页面&#xff1a;https://www.jenkins.io/download/ 根据自己系统还有想要使用的版本&#xff0c;进行选择即可。这里我们使用CentOS作为示例&#xff0c;版本选择长期支持版&#xff08;LTS&#xff09; 2.…...

【MySQL】MySQL表的增删改查(CRUD)

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;MySQL数据库&#x1f447; ✨算法专栏&#xff1a;算法基础&#x1f447; ✨每日一语&#xff1a;生命久如暗室&#xff0c;不碍朝歌暮诗 目 录&#x1f513;一. CRUD&#x1f512;二. 新增&#xff08;Creat…...

GCC for openEuler 数据库性能优化实践

GCC for openEuler是基于开源GCC开发的编译器工具链&#xff08;包含编译器&#xff0c;汇编器&#xff0c;链接器&#xff09;&#xff0c;在openEuler社区开源发布&#xff0c;并通过鲲鹏社区免费提供二进制包&#xff0c;支持aarch64处理器架构。 关键特性 支持鲲鹏微架构芯…...

【C++】类和对象(第二篇)

文章目录1. 类的6个默认成员函数2. 构造函数2.1 构造函数的引出2.2 构造函数的特性3. 析构函数3.1 析构函数的引出3.2 析构函数的特性4. 拷贝构造函数4.1 概念4.2 特性5.赋值运算符重载5.1 运算符重载概念注意练习5.2 赋值重载实现赋值重载的特性6. const成员函数7. 取地址及co…...

MySQL数据库(数据库约束)

目录 数据库约束 数据库约束的类型&#xff1a; null约束 &#xff1a; unique约束&#xff08;唯一约束&#xff09;&#xff1a; default约束&#xff08;默认值约束&#xff09;&#xff1a; primary key约束&#xff08;主键约束&#xff09;&#xff1a; for…...

Hive的安装与配置

一、配置Hadoop环境先看看伪分布式下的集群环境有没有错误的情况&#xff1a;输入命令&#xff1a;start-all.sh jps查看伪分布式的所有进程是否完善二、解压并配置HiveHive压缩包→ https://pan.baidu.com/s/1eOF_ICZV8rV-CEh3nX-7Xw 提取码: m31e 复制这段内容后打开百度网盘…...

关于医院医用医疗隔离电源系统应用案例的分析探讨

【摘要】&#xff1a;介绍该三级医院采用安科瑞医用隔离电源柜&#xff0c;使用落地式安装方式&#xff0c;从而实现将TN系统转化为IT系统&#xff0c;同时监测系统绝缘情况。 【关键词】医用隔离电源柜&#xff1b;IT系统&#xff1b;绝缘情况&#xff1b;中西医结合医院&…...

【LeetCode】剑指 Offer 07. 重建二叉树 p62 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/ 1. 题目介绍&#xff08;07. 重建二叉树&#xff09; 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的…...

ERROR 1114 (HY000): The table ‘tt2‘ is full

insert 操作时提示is full 问题原因 rootlocalhost 11:55:41 [t]>show table status from t like ‘tt2’ \G ; *************************** 1. row *************************** Name: tt2 Engine: MEMORY Version: 10 Row_format: Fixed Rows: 7056 Avg_row_length: 944…...

考了PMP证后工资大概是多少 ?(含pmp资料)

这个岗位的不同还有每个公司的薪资也是不一样的&#xff0c;具体的数字肯定是没有的&#xff0c;但大概的比例还是有的&#xff0c;据PMI调查&#xff0c;在获得PMP证书的人当中&#xff0c;在PMP认证一年后&#xff0c;年薪有所增长的比例为66%&#xff0c;上涨幅度主要集中在…...

基于国产龙芯 CPU 的气井工业网关研究与设计(一)

当前&#xff0c;我国气田的自动化控制程度还未完全普及&#xff0c;并且与世界已普及的气井站的自 动化程度也存在一定的差距。而在天然气资源相对丰富的国家&#xff0c;开采过程中设备研发资 金投入较大&#xff0c;研发周期较长&#xff0c;更新了一代又一代的自动化开采系…...

40/365 javascript 数据类型

1.数据类型 number类型&#xff1a;整数&#xff0c;小数都属于这一类&#xff0c;不具体区分 字符串&#xff1a;hello, "hello" 布尔类型&#xff1a;true,false 逻辑运算符&#xff1a; && || ! 比较运算符&#xff1a; : 类型不一致&#x…...

后勤管理系统—服务台管理功能

数图互通是一家IT类技术型软件科技公司&#xff0c;专业的不动产、工作场所、空间、固定资产、设备家具、设施运维及可持续性管理解决方案软件供应商。 一、后勤管理系统服务台管理功能包含&#xff1a; 1、专业自动化、集中管理的自助服务助理&#xff0c;随时响应服务请求。…...

Spring Boot 是什么,应该如何学习,有哪些优缺点

1、Spring Boot 是什么&#xff1f; Spring Boot是一个基于Spring框架的开源项目&#xff0c;它简化了Spring应用程序的开发过程&#xff0c;提供了一种快速、便捷、可扩展的方式来构建Spring应用程序。 Spring Boot通过自动化配置机制简化了Spring应用程序的配置过程&#x…...

使用yolov5和强化学习训练一个AI智能欢乐斗地主(一)

这里写自定义目录标题项目介绍项目过程介绍训练yolov5目标检测斗地主收集数据集yolov5调参项目介绍 你好&#xff01; 欢迎阅读我的文章&#xff0c;本章将介绍&#xff0c;如何使用yolov5和强化学习训练一个AI斗地主&#xff0c;本项目将分为三个部分&#xff0c;其中包含&am…...

C++ 浅谈之 AVL 树和红黑树

C 浅谈之 AVL 树和红黑树 HELLO&#xff0c;各位博友好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 这里是 C 浅谈系列&#xff0c;收录在专栏 C 语言中 &#x1f61c;&#x1f61c;&#x1f61c; 本系列阿呆将记录一些 C 语言重要的语法特性 &#x1f3…...

【Kotlin】Kotlin函数那么多,你会几个?

目录标准函数letrunwithapplyalsotakeIftakeUnlessrepeat小结作用域函数的区别作用域函数使用场景简化函数尾递归函数&#xff08;tailrec&#xff09;扩展函数高阶函数内联函数&#xff08;inline&#xff09;inlinenoinlinecrossinline匿名函数标准函数 Kotlin标准库包含几个…...

饲养员喂养动物-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

【案例4-2】饲养员喂养动物 记得 关注&#xff0c;收藏&#xff0c;评论哦&#xff0c;作者将持续更新。。。。 【案例目标】 案例描述 饲养员在给动物喂食时&#xff0c;给不同的动物喂不同的食物&#xff0c;而且在每次喂食时&#xff0c;动物都会发出欢快的叫声。例如&…...

数据分析:消费者数据分析

数据分析&#xff1a;消费者数据分析 作者&#xff1a;AOAIYI 创作不易&#xff0c;如果觉得文章不错或能帮助到你学习&#xff0c;记得点赞收藏评论一下哦 文章目录数据分析&#xff1a;消费者数据分析一、前言二、数据准备三、数据预处理四、个体消费者分析五、用户消费行为总…...

Transformer论文阅读:ViT算法笔记

标题&#xff1a;An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 会议&#xff1a;ICLR2021 论文地址&#xff1a;https://openreview.net/forum?idYicbFdNTTy 文章目录Abstract1 Introduction2 Related Work3 Method3.1 Vision Transformer3.2…...

Android基础练习解答【2】

文章目录一 填空题二 判断题三 选择题四 简答题一 填空题 1&#xff0e;除了开启开发者选项之外&#xff0c;还需打开手机上的 usb调试 开关&#xff0c;然后才能在手机上调试App。 2&#xff0e;App开发的两大技术路线包括 _原生开发_和混合开发。 3&#xff0e;App工程的编译…...

k8s 搭建

需求&#xff1a;搭建k8s 为后续自动部署做准备进程&#xff1a;安装至少两个ubuntu18.04系统&#xff08;一个master 一到多个 node&#xff09;每个系统上都要装上docker 和 kubernetes安装dockersudo su apt-get update#安装相关插件 apt-get install apt-transport-https c…...

安全运维之mysql基线检查

版本加固 选择稳定版本并及时更新、打补丁。 稳定版本&#xff1a;发行6-12个月以内的偶数版本。 检查方法&#xff1a; 使用sql语句:select version(); 检查结果&#xff1a; 存在问题&#xff1a;当前数据库版本较老需要更新 解决方案&#xff1a;前往http://www.mysql…...

跨境电商卖家敦煌、雅虎、乐天、亚马逊测评自养号的重要性!

作为亚马逊、敦煌、乐天、雅虎等跨境的卖家&#xff0c;这两年以来&#xff0c;面对流量越来越贵的现实&#xff0c;卖家需要更加珍惜每次访问listing页面的流量&#xff0c;把转化做好&#xff0c;把流量尽可能转化为更多的订单。 提升转化率的技巧 提升产品转化率&#xff0…...

Python 之 Matplotlib xticks 的再次说明、图形样式和子图

文章目录一. 改变 x 轴显示内容 xticks 方法再次说明1. x 轴是数值型数据2. 将 x 轴更改为字符串3. 总结二. 其他元素可视性1. 显示网格&#xff1a;plt.grid()2. plt.gca( ) 对坐标轴的操作三. plt.rcParams 设置画图的分辨率&#xff0c;大小等信息四. 图表的样式参数设置1. …...

3.InfluxDB WEB使用

结合telegraf做指标数据收集 点击 Load Data -> Telegraf 配置界面 influxDB支持在WEB-UI中生成配置文件 然后利用telegraf通过远程URL请求的方式进行获取 点击CREATE CONFIGURATION 创建telegraf配置文件 选择Bucket InfluxDB提供了很多配置好的监控模板供用户选择 可以…...

git冲突合并

一、版本说明 dev&#xff1a;本地仓库中的dev分支 master&#xff1a;本地仓库中的master分支 remotes/origin/master和origin/master&#xff1a;都是远程仓库上的master分支 二、一个解决冲突的常规流程 1、前提条件&#xff1a;不能在master分支上修改任何文件。master分支…...

项目自动化构建工具make/Makefile

目录 make/Makefile概念和关系 make/Makefie的使用 一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff0c;哪些文件需要先编译&#xff0c;哪些文件需要后编译&#xff0c;哪些文件需要重…...

网站源码提取/百度广告竞价

1.第一个直接看看这个游戏看起来视频(GIF我们不能满足游戏展)跑酷游戏最纠结的是地图。碰撞倒是简单&#xff0c;能够自己写或者使用box2d等物理引擎。跑酷游戏地图的特点就是随机性。可是随机中又有策划特意安排的部分。这样让玩家有小小惊喜。所以我就打算这样实现&#xff1…...

无锡专业网站排名推广/网络营销和传统营销的区别有哪些

问题&#xff1a;本站对该题的题解方法&#xff0c;c下可ac&#xff0c; 用python测试结果TLE&#xff0c; 过不了倒数第二个testcase。详情&#xff1a; 我用了不同于题解方法ac后&#xff0c;看到题解很简洁&#xff0c;便照用python照写了一个测速度&#xff0c;结果TLE。而…...

苏州做网站推广的/百度游戏风云榜

原标题&#xff1a;java面向对象如何创建对象java作为互联网编程中使用范围最广泛的编程语言之一&#xff0c;我们有许多的知识是需要掌握学习的&#xff0c;今天武汉中软国际的老师就给大家分析讲解一下java面向对象的编程方法有哪些。常用的创建对象的模式有以下几种&#xf…...

淘宝网上做美国签证的网站可靠吗/seo排名工具有哪些

首先&#xff0c;对于动态规划&#xff0c;我来做一个简短的介绍&#xff0c;相信各位都看得懂。动态规划(dynamic programming)是运筹学的一个分支&#xff0c;是求解决策过程(decision process)最优化的数学方法。先给一道最简单的例题&#xff08;小学奥数水平&#xff09;&…...

响应式网站缺点/电商平台的推广及运营思路

2019独角兽企业重金招聘Python工程师标准>>> 第1部分&#xff1a;说明 最近在做一个类似微信语音聊天的功能&#xff0c;在屏幕的底部放一个Button&#xff0c;按下时可以语音说话&#xff0c;松开时将语音发出去。但是做的过程中遇到一个坑&#xff1a;按钮放到页面…...

网站开发 手机 电脑/seo外包优化

linux基础编程 共享内存 使用内存映射接口mmap系统调用 分类&#xff1a; linux系统编程 2012-07-11 15:24 1607人阅读 评论(0) 收藏 举报 linux编程数据结构accessstructcache采用共享内存通信的一个显而易见的好处是效率高&#xff0c;因为进程可以直接读写内存&#xff0c…...