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

NumPy:Python中的强大数学工具

NumPy:Python中的强大数学工具

文章目录

  • NumPy:Python中的强大数学工具
    • 一、NumPy简介
    • 二、创建数组
    • 三、数组尺寸
    • 四、数组运算
    • 五、数组切片
    • 六、数组连接
    • 七、数据存取
    • 八、数组形态变换
    • 九、数组排序与搜索
    • 十、矩阵与线性代数运算

一、NumPy简介

当谈到数据科学和数值计算时,NumPy是Python编程语言中最重要的软件库之一。NumPy提供了强大的多维数组对象和一系列高效的函数和操作,以便在Python中进行数值计算和科学计算。

NumPy的核心是ndarray,即n-dimensional array,一种用于存储和处理多维数组的数据结构。NumPy中的数组可以包含不同类型的数据,包括整数、浮点数、布尔值和字符串等,这使得NumPy数组非常灵活。

NumPy的另一个关键功能是它提供了许多用于数组操作和计算的函数。例如,可以使用NumPy中的函数进行向量化操作,即对整个数组进行操作,而不是对数组中的每个元素进行单独的操作。这种向量化操作可以大大提高计算速度。

除了基本的数组操作和函数之外,NumPy还提供了许多其他的功能。例如,NumPy中有用于线性代数、随机数生成、傅里叶变换、信号处理和图像处理等领域的函数和类。此外,NumPy还可以与其他Python库和工具集(如Pandas和Matplotlib)集成使用,以便进行更复杂的数据分析和可视化。

总之,NumPy是Python编程语言中最重要的软件库之一,提供了强大的多维数组对象和一系列高效的函数和操作,使得Python成为一种优秀的数值计算和科学计算的工具。

二、创建数组

在NumPy中,有几种方法可以创建数组。以下是其中几种常见的方法:

  1. 使用numpy.array()函数创建数组:这是一种最基本的创建数组的方法,它接受一个序列(例如Python列表或元组)作为输入,并将其转换为NumPy数组。例如,下面的代码将Python列表转换为NumPy数组:

    import numpy as npa = np.array([1, 2, 3, 4, 5])
    print(a)
    
    [1 2 3 4 5]
    
  2. 使用numpy.zeros()函数创建数组:这个函数创建一个由0组成的数组,并指定数组的形状。例如,下面的代码创建一个形状为(3, 4)的二维数组:

    import numpy as npa = np.zeros((3, 4))
    print(a)
    
    [[0. 0. 0. 0.][0. 0. 0. 0.][0. 0. 0. 0.]]
    
  3. 使用numpy.ones()函数创建数组:这个函数创建一个由1组成的数组,并指定数组的形状。例如,下面的代码创建一个形状为(2, 3)的二维数组:

    import numpy as npa = np.ones((2, 3))
    print(a)
    
    [[1. 1. 1.][1. 1. 1.]]
    
  4. 使用numpy.arange()函数创建数组:这个函数创建一个等差数列,并将其转换为NumPy数组。例如,下面的代码创建一个由1到9的整数组成的数组:

    import numpy as npa = np.arange(1, 10)
    print(a)
    
    [1 2 3 4 5 6 7 8 9]
    
  5. 使用numpy.linspace()函数创建数组:这个函数创建一个在指定范围内均匀分布的数组。例如,下面的代码创建一个由0到1之间的5个数字组成的数组:

    import numpy as npa = np.linspace(0, 1, 5)
    print(a)
    
    [0.   0.25 0.5  0.75 1.  ]
    

这些是一些在NumPy中创建数组的常用方法和示例。这些函数提供了许多选项,可以进一步自定义数组的形状、数据类型和其他特性。

三、数组尺寸

在NumPy中,可以使用shape属性获取数组的尺寸,它返回一个表示数组形状的元组,其中元组中的每个值表示该维度的大小。以下是一些示例:

import numpy as np# 创建一个二维数组
a = np.array([[1, 2, 3], [4, 5, 6]])# 获取数组的形状
print(a.shape)  # 输出 (2, 3)# 创建一个三维数组
b = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])# 获取数组的形状
print(b.shape)  # 输出 (2, 2, 2)# 创建一个一维数组
c = np.array([1, 2, 3, 4, 5])# 获取数组的形状
print(c.shape)  # 输出 (5,)

在第一个示例中,我们创建了一个2x3的二维数组,并使用shape属性获取其形状,它返回一个元组(2, 3)。在第二个示例中,我们创建了一个2x2x2的三维数组,并使用shape属性获取其形状,它返回一个元组(2, 2, 2)。在第三个示例中,我们创建了一个包含5个元素的一维数组,并使用shape属性获取其形状,它返回一个元组(5,),这里使用的逗号表示这是一个元组,而不是单个整数。

除了shape属性之外,NumPy还提供了许多其他的属性和方法,用于获取和操作数组的尺寸和形状,例如ndim属性、size属性、reshape()方法等。这些方法可以帮助您更好地了解和操作数组的结构和形状。

四、数组运算

NumPy中的数组运算可以使用各种数学运算符和NumPy中提供的函数完成。以下是一些示例:

import numpy as np# 创建两个数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 加法
c = a + b
print(c)  # 输出 [5 7 9]# 减法
d = a - b
print(d)  # 输出 [-3 -3 -3]# 乘法
e = a * b
print(e)  # 输出 [ 4 10 18]# 除法
f = a / b
print(f)  # 输出 [0.25 0.4  0.5 ]# 按位求幂
g = a ** b
print(g)  # 输出 [  1  32 729]# 按位取余
h = a % b
print(h)  # 输出 [1 2 3]# 求平方根
i = np.sqrt(a)
print(i)  # 输出 [1.         1.41421356 1.73205081]

在上面的示例中,我们创建了两个NumPy数组a和b,然后使用加法、减法、乘法、除法、按位求幂、按位取余和求平方根等运算符对它们进行了各种运算。对于所有这些运算,NumPy会对数组的每个元素进行相应的运算。

此外,NumPy还提供了许多其他函数,用于对数组进行各种操作,例如sum()、mean()、std()、min()、max()等,这些函数可以对数组进行聚合操作,或者对数组中的元素进行排序、比较等操作。这些函数可以帮助您更好地了解和操作NumPy数组。

五、数组切片

在NumPy中,可以使用切片操作从数组中获取子数组或部分元素。切片操作使用[start:stop:step]的语法,其中start表示子数组的起始索引,stop表示子数组的结束索引(不包括该索引对应的元素),step表示切片步长。以下是一些示例:

import numpy as np# 创建一个一维数组
a = np.array([1, 2, 3, 4, 5])# 获取前三个元素
b = a[:3]
print(b)  # 输出 [1 2 3]# 获取第二个到第四个元素
c = a[1:4]
print(c)  # 输出 [2 3 4]# 获取每隔一个元素的子数组
d = a[::2]
print(d)  # 输出 [1 3 5]# 反转数组
e = a[::-1]
print(e)  # 输出 [5 4 3 2 1]# 创建一个二维数组
f = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 获取第一行
g = f[0, :]
print(g)  # 输出 [1 2 3]# 获取第二列
h = f[:, 1]
print(h)  # 输出 [2 5 8]# 获取前两行和前两列的子数组
i = f[:2, :2]
print(i)  # 输出 [[1 2] [4 5]]

在上面的示例中,我们首先创建了一个一维数组a和一个二维数组f,然后使用切片操作从这些数组中获取子数组或部分元素。我们可以使用索引和切片操作来访问一维和多维数组的不同部分,这些操作可以让我们更方便地操作和处理数组中的数据。

六、数组连接

在NumPy中,可以使用各种函数将两个或多个数组连接在一起,以形成更大的数组。以下是一些示例:

import numpy as np# 创建两个一维数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 水平连接两个数组
c = np.hstack((a, b))
print(c)  # 输出 [1 2 3 4 5 6]# 垂直连接两个数组
d = np.vstack((a, b))
print(d)
# 输出 [[1 2 3]
#        [4 5 6]]# 深度连接两个数组
e = np.dstack((a, b))
print(e)
# 输出 [[[1 4]
#         [2 5]
#         [3 6]]]# 创建两个二维数组
f = np.array([[1, 2], [3, 4]])
g = np.array([[5, 6], [7, 8]])# 水平连接两个数组
h = np.hstack((f, g))
print(h)
# 输出 [[1 2 5 6]
#        [3 4 7 8]]# 垂直连接两个数组
i = np.vstack((f, g))
print(i)
# 输出 [[1 2]
#        [3 4]
#        [5 6]
#        [7 8]]# 深度连接两个数组
j = np.dstack((f, g))
print(j)
# 输出 [[[1 5]
#         [2 6]]
#        [[3 7]
#         [4 8]]]

在上面的示例中,我们创建了一些数组,并使用hstack()、vstack()和dstack()函数将它们连接在一起。这些函数可以将两个或多个数组沿着不同的维度连接起来,例如在一维数组中进行水平连接,在二维数组中进行水平、垂直和深度连接。这些函数可以帮助我们更方便地将不同的数组组合在一起,并进行一些更复杂的操作和分析。

七、数据存取

NumPy提供了两个函数np.save()np.load(),用于将数组存储到磁盘文件中以及从磁盘文件中加载数组。

  • np.save(file, arr, allow_pickle=True, fix_imports=True):将数组存储到磁盘文件中。
    • file:文件名,字符串类型。
    • arr:要保存的数组。
    • allow_pickle:是否允许pickle序列化。默认为True。
    • fix_imports:如果为True,则为Python 2和Python 3兼容性而导入pickle模块。默认为True。
  • np.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII'):从磁盘文件中加载数组。
    • file:文件名,字符串类型。
    • mmap_mode:如果给定,使用内存映射来加速读取大文件。默认为None。
    • allow_pickle:是否允许pickle序列化。默认为True。
    • fix_imports:如果为True,则为Python 2和Python 3兼容性而导入pickle模块。默认为True。
    • encoding:如果数据文件是文本文件,则指定文件的编码格式。默认为’ASCII’。

以下是一个简单的示例,演示了如何使用np.save()np.load()函数来保存和加载数组:

import numpy as np# 创建一个数组
arr = np.array([1, 2, 3, 4, 5])# 保存数组到文件
np.save('my_array.npy', arr)# 加载文件中的数组
loaded_array = np.load('my_array.npy')# 打印加载的数组
print(loaded_array)

在上面的示例中,我们首先创建一个数组arr,然后使用np.save()函数将它保存到文件my_array.npy中。接着,我们使用np.load()函数从文件中加载数组,并将其存储在loaded_array变量中。最后,我们打印loaded_array,以确认我们已经成功地加载了数组。注意,文件名包含文件扩展名.npy。保存和加载多维数组的方法与此类似,只是需要将数组作为参数传递给相应的函数。

八、数组形态变换

NumPy提供了一些方法,可以用于改变数组的形状或者大小。下面是几个常用的方法,并给出相应的示例:

  1. reshape()方法:改变数组的形状,不改变元素个数

    import numpy as np# 创建一个3x4的数组
    arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])# 将数组形状变为4x3
    new_arr = arr.reshape(4, 3)print(new_arr)
    
    array([[ 1,  2,  3],[ 4,  5,  6],[ 7,  8,  9],[10, 11, 12]])
    
  2. resize()方法:改变数组的形状和大小

    import numpy as np# 创建一个3x4的数组
    arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])# 改变数组的形状和大小为4x5
    arr.resize(4, 5)print(arr)
    
    array([[ 1,  2,  3,  4,  5],[ 6,  7,  8,  9, 10],[11, 12,  0,  0,  0],[ 0,  0,  0,  0,  0]])
    
  3. transpose()方法:交换数组的维度

    import numpy as np# 创建一个3x4的数组
    arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])# 交换数组的维度
    new_arr = arr.transpose()print(new_arr)
    
    array([[ 1,  5,  9],[ 2,  6, 10],[ 3,  7, 11],[ 4,  8, 12]])
    
  4. flatten()方法:将数组展开为一维数组

    import numpy as np# 创建一个3x4的数组
    arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])# 将数组展开为一维数组
    new_arr = arr.flatten()print(new_arr)
    
    array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])
    

这些方法可以方便地对数组进行形态变换,但需要注意的是,有些方法会直接修改原始数组的形状,而有些方法则会返回一个新的数组。在使用这些方法时,需要根据具体的需求来选择合适的方法来实现。

九、数组排序与搜索

NumPy提供了一些方法,可以对数组进行排序和搜索。下面是几个常用的方法,并给出相应的示例:

  1. sort()方法:对数组进行排序

    import numpy as np# 创建一个随机数组
    arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])# 对数组进行排序
    arr.sort()print(arr)
    
    array([1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9])
    
  2. argsort()方法:返回数组排序后的索引值

    import numpy as np# 创建一个随机数组
    arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])# 返回数组排序后的索引值
    idx = arr.argsort()print(idx)
    
    array([ 1,  3,  6,  0,  9,  2,  4,  8, 10,  7,  5])
    
  3. searchsorted()方法:返回要插入元素的索引值

    import numpy as np# 创建一个有序数组
    arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])# 返回要插入元素的索引值
    idx = np.searchsorted(arr, 5)print(idx)
    
    4
    
  4. max()方法和min()方法:返回数组中的最大值和最小值

    import numpy as np# 创建一个随机数组
    arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])# 返回数组中的最大值和最小值
    max_value = arr.max()
    min_value = arr.min()print(max_value, min_value)
    
    9 1
    

这些方法可以方便地对数组进行排序和搜索,但需要注意的是,排序方法会直接修改原始数组,而搜索方法不会修改数组。在使用这些方法时,需要根据具体的需求来选择合适的方法。

十、矩阵与线性代数运算

NumPy提供了强大的矩阵和线性代数运算功能,下面介绍一些常用的运算方法,并举例说明:

  1. 创建矩阵

    使用numpy.array()函数可以创建矩阵。

    import numpy as np# 创建一个2x2的矩阵
    matrix = np.array([[1, 2], [3, 4]])print(matrix)
    
    array([[1, 2],[3, 4]])
    
  2. 矩阵乘法

    使用numpy.dot()函数可以进行矩阵乘法运算。

    import numpy as np# 创建两个矩阵
    matrix1 = np.array([[1, 2], [3, 4]])
    matrix2 = np.array([[5, 6], [7, 8]])# 矩阵乘法
    result = np.dot(matrix1, matrix2)print(result)
    
    array([[19, 22],[43, 50]])
    
  3. 矩阵的逆

    使用numpy.linalg.inv()函数可以求矩阵的逆。

    import numpy as np# 创建一个2x2的矩阵
    matrix = np.array([[1, 2], [3, 4]])# 求矩阵的逆
    inv_matrix = np.linalg.inv(matrix)print(inv_matrix)
    
    array([[-2. ,  1. ],[ 1.5, -0.5]])
    
  4. 矩阵的转置

    使用numpy.transpose()函数可以求矩阵的转置。

    import numpy as np# 创建一个2x3的矩阵
    matrix = np.array([[1, 2, 3], [4, 5, 6]])# 求矩阵的转置
    transpose_matrix = np.transpose(matrix)print(transpose_matrix)
    
    array([[1, 4],[2, 5],[3, 6]])
    
  5. 矩阵的行列式

    使用numpy.linalg.det()函数可以求矩阵的行列式。

    import numpy as np# 创建一个2x2的矩阵
    matrix = np.array([[1, 2], [3, 4]])# 求矩阵的行列式
    det_matrix = np.linalg.det(matrix)print(det_matrix)
    
    -2.0
    
  6. 求特征值和特征向量

    使用numpy.linalg.eig()函数可以求解矩阵的特征值和特征向量。特征向量是在相应特征值下的非零向量。

    import numpy as np# 创建一个3x3的矩阵
    matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 求解特征值和特征向量
    eigenvalues, eigenvectors = np.linalg.eig(matrix)print("特征值:", eigenvalues)
    print("特征向量:", eigenvectors)
    
    特征值: [ 1.61168440e+01 -1.11684397e+00 -1.30367773e-15]
    特征向量: [[-0.23197069 -0.78583024  0.40824829][ 0.52532209 -0.08675134 -0.81649658][-0.81867387  0.61232755  0.40824829]]
    
  7. 奇异值分解

    奇异值分解(Singular Value Decomposition,SVD)是一种用于矩阵分解的方法。它将矩阵分解成三个矩阵的乘积,即A=UΣVTA = U\Sigma V^TA=UΣVT,其中UUUVVV是正交矩阵,Σ\SigmaΣ是一个对角矩阵,对角线上的元素称为奇异值。

    使用numpy.linalg.svd()函数可以进行奇异值分解。

    import numpy as np# 创建一个3x2的矩阵
    matrix = np.array([[1, 2], [3, 4], [5, 6]])# 进行奇异值分解
    U, S, VT = np.linalg.svd(matrix)print("U:", U)
    print("奇异值:", S)
    print("V转置:", VT)
    
    U: [[-0.2298477  -0.88346102 -0.40824829][-0.52474482 -0.24078249  0.81649658][-0.81964194  0.40189604 -0.40824829]]
    奇异值: [9.52551809 0.51430058]
    V转置: [[-0.61962948 -0.78489445][ 0.78489445 -0.61962948]]
    

这些函数是NumPy中用于进行线性代数计算的一小部分。NumPy还提供了许多其他有用的线性代数函数,例如求解线性方程组、计算矩阵的行列式和求逆等。这些函数使得使用NumPy可以更加方便地进行线性代数计算。

相关文章:

NumPy:Python中的强大数学工具

NumPy:Python中的强大数学工具 文章目录NumPy:Python中的强大数学工具一、NumPy简介二、创建数组三、数组尺寸四、数组运算五、数组切片六、数组连接七、数据存取八、数组形态变换九、数组排序与搜索十、矩阵与线性代数运算一、NumPy简介 当谈到数据科学…...

Hbase资源隔离操作指南

1.检查集群的环境配置 1.1 HBase版本号确认> 5.11.0 引入rsgroup的Patch: [HBASE-6721] RegionServer Group based Assignment - ASF JIRA RegionServer Group based Assignment 社区支持版本:2.0.0 引入rsgroup的CDH版本 5.11.0 https://www.…...

TPS2012B泰克Tektronix隔离通道示波器

简  述: 复杂环境中开发和测试你的设计,进行浮动或差 分测量;100MHz,2通道 主要特点和优点 100 MHz和200 MHz带宽 高达2 GS/s的实时采样率 2条或4条全面隔离和浮动通道,外加隔离外部触 发 在安装两块电池时可以连续…...

9.4 PIM-DM

实验目的 熟悉PIM-DM的应用场景掌握PIM-DM的配置方法 实验拓扑 实验拓扑如图9-28所示&#xff1a; 图9-28&#xff1a;PIM-DM 实验步骤 &#xff08;1&#xff09;IP地址的配置 MCS1的配置如图9-29所示&#xff1a; 图9-29&#xff1a;配置MCS1的IP地址 R1的配置 <Huawe…...

程序员推荐的良心网站合集!

今天来给大家推荐几个程序员必看的国外良心网站合集。 IBM developer 技术性很强的博客网站&#xff0c;网站自带真实示例代码和架构解决方案&#xff0c;大家可以在上面找到适合自己的语言方向开始学习交流。 https://developer.ibm.com/ infoq 技术论坛社区&#xff0c;内…...

信息安全概论之《密码编码学与网络安全----原理与实践(第八版)》

前言&#xff1a;在信息安全概论课程的学习中&#xff0c;参考了《密码编码学与网络安全----原理与实践&#xff08;第八版&#xff09;》一书。以下内容为以课件为主要参考&#xff0c;课本内容与网络资源为辅助参考&#xff0c;学习该课程后作出的总结。 一、信息安全概述 1…...

跬智信息全新推出云原生数据底座玄武,助力国产化数据服务再次升级

2月28日&#xff0c;跬智信息&#xff08;Kyligence&#xff09;宣布全新推出国产化云原生数据底座开源项目玄武&#xff08;XUANWU&#xff09;&#xff0c;以助力企业加速数据平台上云&#xff0c;并实现国产化升级。玄武&#xff08;XUANWU&#xff09;是在容器化技术上形成…...

【离线数仓-9-数据仓库开发DWS层设计要点-DWS层汇总表以及数据装载】

离线数仓-9-数据仓库开发DWS层设计要点-DWS层汇总表以及数据装载离线数仓-9-数据仓库开发DWS层设计要点-DWS层汇总表以及数据装载一、交易域用户商品粒度订单最近1日/N日汇总表1.交易域用户商品粒度订单最近1日汇总表2.交易域用户商品粒度订单最近N日汇总表二、交易域优惠券粒度…...

我的十年编程路 序

算起来&#xff0c;从决定并从事编程开始&#xff0c;已十年有余了。 这十年是怎么算的呢&#xff1f; 我的本科是从2009年至2013年&#xff0c;现在回想起来&#xff0c;应该是从2012年下半年&#xff0c;也就是大四还未正式开始的时候决定从事Android开发。参加了培训班&am…...

xs 180

选择题(共180题,合计180.0分) 1. 你被任命为某项目的敏捷教练&#xff0c;为了更好的交付产品&#xff0c;你与团队召开会议&#xff0c;讨论项目过程中团队应该如何做到有效沟通。最有可能确定项目过程中主要以下列哪种方式沟通? A 团队成员在各自的办公室自行办公&#…...

时间序列分析 | BiLSTM双向长短期记忆神经网络时间序列预测(Matlab完整程序)

时间序列分析 | BiLSTM双向长短期记忆神经网络时间序列预测(Matlab完整程序) 目录 时间序列分析 | BiLSTM双向长短期记忆神经网络时间序列预测(Matlab完整程序)预测结果评价指标基本介绍完整程序参考资料预测结果 评价指标 训练集数据的R2为:0.99302 测试集数据的R2为&…...

0101基础-认证授权-springsecurity

文章目录1 基础概念1.1 认证1.2 会话1.3 jwt1.4 授权2 授权的数据模型3 RBAC3.1 基于角色的访问控制3.2 基于资源的访问控制4 名词解析4.1 SSO4.2 CAS4.3 联合登陆4.4 多端登录&#xff1a;同一账号不同终端登录4.5 OAuth1 基础概念 1.1 认证 认证是为了保护系统的隐私数据和…...

一文简单了解THD布局要求

一、什么是THD&#xff1f; THD指总谐波失真。谐波失真是指输出信号比输入信号多出的谐波成分。谐波失真是系统不完全线性造成的。所有附加谐波电平之和称为总谐波失真。总谐波失真与频率有关。一般说来&#xff0c;1000Hz频率处的总谐波失真最小&#xff0c;因此不少产品均以…...

[C++]多态

&#x1f941;作者&#xff1a; 华丞臧 &#x1f4d5;​​​​专栏&#xff1a;【C】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449;LeetCode 文章目录一、多态…...

中国版ChatGPT高潮即将到来,解密ChatGPT底层网络架构

2022年11月30日人工智能研究实验室OpenAI发布全新聊天机器人ChatGPT&#xff0c;在中国用户无法访问的前提下&#xff0c;上线仅两个月月活用户就突破了1亿。ChatGPT如同重磅炸弹&#xff0c;一时间火遍全球。面对这一万亿级市场机遇&#xff0c;在国内&#xff0c;无论是资本方…...

PingCAP 唐刘:一个咨询顾问对 TiDB Chat2Query Demo 提出的脑洞

导读 近日&#xff0c;TiDB Cloud 发布了 Chat2Query 功能&#xff0c;在 TiDB Cloud 上通过自然语言提问&#xff0c;即可生成相应的 SQL&#xff0c;通过 TiDB Cloud 对上传的任意数据集进行分析。Gartner 也在一份有关 ChatGPT 对数据分析影响研究的报告中提及了 PingCAP 的…...

力扣-销售分析III

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;1084. 销售分析III二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结…...

U-Boot 之七 详解 Driver Model 架构、配置、命令、初始化流程

U-Boot 在 2014 年 4 月参考 Linux Kernel 的驱动模型设计并引入了自己的 Driver Model&#xff08;官方简称 DM&#xff09; 驱动架构。这个驱动模型&#xff08;DM&#xff09;为驱动的定义和访问接口提供了统一的方法&#xff0c;提高了驱动之间的兼容性以及访问的标准性。 …...

大数据算法重点

1 大数据亚线性空间算法 场景&#xff1a;用二进制存储一个数字N&#xff0c;需要log(N)的空间 问题&#xff1a;如果N特别大而且这样的N又特别的多&#xff0c;该怎么办呢&#xff1f; 思路&#xff1a;减少一些准确性&#xff0c;从而节省更多的空间。 解决办法&#xff1a;使…...

【Eclipse】The import xxxx cannot be resolved 问题解决

在Eclipse使用过程中&#xff0c;某一个类明明存在&#xff0c;但是使用import导入时&#xff0c;却总是提示The import xxxx cannot be resolved的错误&#xff0c;解决办法如下&#xff1a; 点击Project->Clean......

LinkWeChat系统Docker版部署注意事项

具体部署手册&#xff1a;https://www.yuque.com/linkwechat/help/ffi7bu注意事项&#xff1a;启动类配置文件路径需要修改&#xff0c;各个模块启动类原配置如下&#xff1a;.properties("spring.config.name:bootstrap", "config/run/bootstrap.yml")各个…...

【高数】不定积分之有理函数的积分

文章目录前言有理函数积分的通用解法有理函数的特殊解法前言 这个专栏开始更新高等数学的解题方法&#xff0c;本专栏没有特别强调概念&#xff0c;主要是让大家熟悉考研中的一些题型以及如何求解 关键步骤用蓝色高亮提示 总结方法用红色高亮提示 注意事项用绿色高亮提示 希望…...

Java——数组

目录 前言 一、数组的定义 二、数组声明和创建 三、三种初始化及内存分析 Java内存分析 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 四、下标越界及小结 五、数组的使用 For-Each循环 数组作方法入参 数组作返回值 六、二维数组 七…...

产品分析|虎扑APP

不同于传统的体育新闻门户网站,虎扑以篮球社区起家,在经历了从体育论坛到体育新闻网站的发展后,又逐渐回归社区发展。 目前,虎扑汇聚了大量的男性用户,俨然成为了“互联网直男的自留地”。特立独行的发展方向使得虎扑不断发展壮大,同时也使得虎扑逐渐触碰到了行业天花板。…...

有限差分法-二维泊松方程及其Matlab程序实现

2.2 偏微分方程的差分解法 2.2.1 二维泊松方程 考虑区域 Ω \Omega Ω 上的二维泊松问题: { − ( ∂ 2...

【设计模式】6.代理模式

概述 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理访问目标对象 这样做的好处是&#xff1a;可以在目标对象实现的基础上,增强额外的功能操作&#xff0c;即扩展目标对象的功能。 被代理的对象可以是&#xff1a;远程对象、创建开销大的对象或需要安全…...

SRC挖掘之Access验证校验的漏洞挖掘

漏洞已修复&#xff0c;感谢某大佬的知识分享。 任意用户密码重置->可获取全校师生个人mingan信息 开局就是信息收集。 对于挖掘edu的信息收集 1.可尝试谷歌搜索语法&#xff0c;获取学号信息 2. 旁站的渗透获取 3. 学校的贴吧获取(大部分都是本校学生) 当然我就是闲&a…...

GG-21 100V 5A逆功率继电器

1 用途 GG-21逆功率继电器在出现逆功率时&#xff0c;从电网中断开交流发电机。 2 概述 逆功率继电器是基于感应式原理(具有旋转磁场)而工作。 继电器导磁体由两个磁路系统组成&#xff1a;上磁路系统和下磁路系统。电流线圈安装在上磁路系统中&#xff0c;它由接在发电机某相的…...

MyBatis中#{}和${}的区别

目录 前言 1、处理参数的方式不同 2、${}的优点 3、SQL注入问题 4、like查询问题 前言 #{}和${}都可以在MyBatis中用来动态地接收参数&#xff0c;但二者在本质上还是有很大的区别。 1、处理参数的方式不同 ${} &#xff1a;预编译处理 MyBatis在处理#{}时&#xff0c…...

ElementUi的使用

ElementUi使用说明 element ui安装与配置 npm i element-ui –S项目入口文件main.js 导入 Element-UI 相关资源// 导入组件库 import ElementUI from element-ui; // 导入组件相关样式 import element-ui/lib/theme-chalk/index.css; // 配置 Vue 插件 Vue.use(ElementUI);文档…...

龙泉做网站哪家好/如何制作网页链接

AI相关 网易有道AI团队自主设计研发了高性能端侧机器学习计算库——EMLL(Edge ML Library)&#xff0c;并已在近日开源。EMLL 为加速端侧 AI 推理而设计&#xff0c;提供基于端侧处理器的高性能机器学习计算库&#xff0c;支持fp32、fp16、int8等数据类型&#xff0c;已在网易…...

在线男人和女人做那件事网站/精准营销包括哪几个方面

Check Point提醒苹果iOS的核心应用程序可能会暴露用户的凭据。所幸的是iOS 9包含有相关的补丁。 Apple ID ios操作系统专门为用户提供了方便以便用户自己通过一个Apple ID来管理设备。现如今iOS的市场份额占当前移动设备行业的40&#xff05;以上&#xff0c;Apple ID与用户的所…...

给单位做网站需要多少钱/网站宣传方式有哪些

题目大意&#xff1a;给出一个数组&#xff0c;用这些数组里的元素去凑一个target。元素可以重复取用。 感觉对这种题目还是生疏的。脑子里有想法&#xff0c;但是不知道怎么表达出来。 先记录下自己的递归法。应该还可以用循环实现。 回溯&#xff1a;罗列出所有的不重复的可能…...

深圳建设工程交易服务网龙岗分中心/陕西seo主管

有关正交实验法、场景图、错误推测法&#xff0c;可参考文章&#xff1a;​​​​​​​​​​​​​​软件测试-黑盒测试方法&#xff08;二&#xff09;---正交实验法、场景图、错误推测法 一、等价类划分 使用等价类划分最主要的原因就是穷举测试不可能。 定义&#xff1a;…...

王野电动车/关键词整站排名优化

...

东莞做网站 南城石佳/seo快速收录快速排名

HP-Socket 是一套通用的高性能 Windows Socket 组件包&#xff0c;包含服务端组件&#xff08;IOCP 模型&#xff09;和客户端组件&#xff08;Event Select 模型&#xff09;&#xff0c;广泛适用于 Windows 平台的 TCP 通信系统。HP-Socket 对通信层实现完全封装&#xff0c;…...