千家信息网

python的numpy模块使用实例分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,今天小编给大家分享一下python的numpy模块使用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下
千家信息网最后更新 2026年10月31日python的numpy模块使用实例分析

今天小编给大家分享一下python的numpy模块使用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展。Numpy是python中众多机器学习库的依赖,这些库通过Numpy实现基本的矩阵计算。

    Numpy支持高阶、大量计算的矩阵、向量计算,与此同时还提供了较为丰富的函数。此外,Numpy基于更加现代化的编程语言--python,python凭借着开源、免费、灵活性、简单易学、工程特性好等特点风靡技术圈,已经成为机器学习、数据分析等领域的主流编程语言。

    一、array类型

    numpy的array类型是该库的一个基本数据类型,这个数据类型从字面上看是数组的意思,也就意味着它最关键的属性是元素与维度,我们可以用这个数据类型来实现多维数组。

    因此,通过这个数据类型,我们可以使用一维数组来表示向量,二维数组表示矩阵,并以此类推以用来表示更高维度的张量。

    1.1array类型的基本使用

    import numpy as np# 通过np.array()方法创建一个名为array的array类型,参数是一个listarray = np.array([1, 2, 3, 4])print(array)# 结果为:[1 2 3 4]# 获取array中元素的最大值print(array.max())# 结果为:4# 获取array中元素的最小值print(array.min())# 结果为:1# 获取array中元素的平均值print(array.mean())# 结果为:2.5# 直接将array乘以2,python将每个元素都乘以2print(array*2)# 结果为:[2 4 6 8]print(array+1)# 结果为:[2 3 4 5]print(array/2)# 结果为:[0.5 1.  1.5 2. ]# 将每一个元素都除以2,得到浮点数表示的结果print(array % 2)# 结果为:[1 0 1 0]array_1 = np.array([1, 0, 2, 0])# 获取该组数据中元素值最大的那个数据的首个索引,下标从0开始print(array_1.argmax())# 结果为:2

    通过上面的代码,我们可以了解到Numpy中array类型的基本使用方法。

    我们可以看到,array其实是一个类,通过传入一个list参数来实例化为一个对象,从而实现了对数据的封装。

    1.2对更高维度数据的处理

    import numpy as np# 创建一个二维数组,用以表示一个3行2列的矩阵array = np.array([[1, 2], [3, 4], [5, 6]])print(array)# 查看数据的维度属性,下面输出结果(3,2)表示3行2列print(array.shape)# 结果为:(3, 2)# 查看元素个数print(array.size)# 结果为:6# 查看元素最大值的索引print(array.argmax())# 结果为:5# 将shape为(3,2)的array转换为一行表示print(array.flatten())# 结果为:[1 2 3 4 5 6]# 我们可以看到,flatten()方法是将多维数据"压平"为一维数组的过程#将array数据从shape为(3,2)的形式转为(2,3)的形式print(array.reshape(2, 3))'''结果为:[[1 2 3] [4 5 6]]'''#将array数据从shape为(3,2)的形式转为(1,6)的形式print(array.reshape(1, 6))# 结果为:[[1 2 3 4 5 6]]

    高级一点的就是flatten()和reshape()函数了,需要注意下reshape()返回的结果是array类型

    1.3Numpy创建特殊类型的array类型

    1.3.1生成全为0或全为1的array
    import numpy as np# 生成所有元素为array_zeros = np.zeros((2, 3, 3))print(array_zeros)'''结果为:[[[0. 0. 0.]  [0. 0. 0.]  [0. 0. 0.]] [[0. 0. 0.]  [0. 0. 0.]  [0. 0. 0.]]]'''array_ones = np.ones((2, 3, 3))print(array_ones)'''结果为:[[[1. 1. 1.]  [1. 1. 1.]  [1. 1. 1.]] [[1. 1. 1.]  [1. 1. 1.]  [1. 1. 1.]]]'''print(array_ones.shape)# 结果为:(2, 3, 3)

    注意:如果将(2,3,3)改为(3,3)

    array_zeros = np.zeros((3, 3))print(array_zeros)'''结果为:[[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]'''

    其生成的是3行3列的array

    1.3.2np.arrange()和np.linspace()

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

    返回给定间隔内均匀分布的值。值在半开区间``[start, stop)``(换句话说,包括`start`但不包括`stop`的区间)内生成。对于整数参数,该函数等效于 Python 内置的 `range` 函数,但返回的是 ndarray 而不是列表。当使用非整数步长(例如 0.1)时,结果通常会不一致。对于这些情况,最好使用 `numpy.linspace`。

    linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

    在指定的时间间隔内返回均匀分布的数字。返回"num"个均匀分布的样本,在区间 [`start`, `stop`] 上计算。

    start:序列的起始值。

    stop:序列的结束值,除非 `endpoint` 设置为 False。在这种情况下,序列由除最后一个"num + 1"个均匀分布的样本之外的所有样本组成,因此排除了"stop"。请注意,当 `endpoint` 为 False 时,步长会发生变化。

    num=50:要生成的样本数。默认值为 50。必须为非负数。

    endpoint=True:如果为真,`stop` 是最后一个样本。否则,不包括在内。默认为真。

    retstep=False:如果为 True,则返回 (`samples`, `step`),其中 `step` 是样本之间的间距。

    dtype=None:输出数组的类型。如果 `dtype` 没有给出,数据类型是从 `start` 和 `stop` 推断出来的。推断的 dtype 永远不会是整数;即使参数会产生一个整数数组,也会选择`float`。

    因此以下代码就很容易理解了

    # 生成一个array,从0递增到10,步长为1array_arange = np.arange(10)print(array_arange)# 结果为:[0 1 2 3 4 5 6 7 8 9]# 生成一个array,从0递增到10,步长为2array_arange_1 = np.arange(0, 10, 2)print(array_arange_1)# 结果为:[0 2 4 6 8]# 生成一个array,将0-10等分为5部分array_linspace = np.linspace(0, 10, 5)print(array_linspace)# 结果为:[ 0.   2.5  5.   7.5 10. ]

    1.4Numpy基础计算演示

    import numpy as np# 取绝对值print(np.abs([1, -2, 3, -4]))# [1 2 3 4]# 求正弦值print(np.sin(np.pi/2))# 1.0# 求反正切值print(np.arctan(1))# 0.7853981633974483# 求e的2次方print(np.exp(2))# 7.38905609893065# 求2的三次方print(np.power(2, 3))# 8# 求向量[1,2]与[3,4]的点积print(np.dot([1, 2], [3, 4]))# 11# 求开方print(np.sqrt(4))# 2.0# 求和print(np.sum([1, 2, 3, 4]))# 10# 求平均值print(np.mean([1, 2, 3, 4]))#2.5 # 求标准差print(np.std([1, 2, 3, 4]))# 1.118033988749895

    二、线性代数相关

    前面我们已经了解到array类型及其基本操作方法,了解array类型可以表示向量、矩阵和多维张量。

    线性代数计算在科学计算领域中非常重要,因此接下来了解以下Numpy提供的线性代数操作

    import numpy as npvector_a = np.array([1, 2, 3])vector_b = np.array([2, 3, 4])# 定义两入向量vector_a与vector_bm = np.dot(vector_a, vector_b)# 将两个向量相乘,在这里也就是点乘,结果为20print(m)n = vector_a.dot(vector_b)print(n)# 将vector_a与vector_b相乘,结果为20o = np.dot(vector_a, vector_b.T)print(o)'''将一个行向量与一个列向量叉乘的结果相当于将两个行向量求点积,这里测试了dot()方法。其中array类型的T()方法表示转置。测试结果表明:dot()方法默认对两个向量求点积。对于符合叉乘格式的矩阵,自动进行又乘。'''# 我们看一下下面这个例子:matrix_a = np.array([[1, 2], [3, 4]])# 定义一个2行2列的方阵matrix_b = np.dot (matrix_a, matrix_a.T)# 这里将该方阵与其转置叉乘,将结果赋予matrix_b变量print(matrix_b)'''结果为:array([[5,11],[11,25]])'''p = np.linalg.norm([1, 2])print(p)# 求一个向量的范数的值,结果为2.2360679774997898# 如果norm()方法没有指定第2个参数,则默认为求2范数np.linalg.norm([1, -2], 1)# 指定第2个参数值为1,即求1范数。我们在前面介绍过,1范数的结果为向量中各元素绝对值之和,结果为3.0q = np.linalg.norm([1, 2, 3, 4], np. inf)print(q)# 求向量的无穷范数,其中np.inf表示正无穷,也就是向量中元素值最大的那个,其结果为4.0r = np.linalg .norm([1, 2, 3, 4], -np.inf)print(r)# 同理,求负无穷范数的结果为1, 也就是向量中元素的最小值# 求行列式s = np.linalg.det(matrix_a)print(s)# -2.0000000000000004t = np.trace(matrix_a)print(t)# 求矩阵matrix_a的迹,结果为5u = np.linalg.matrix_rank(matrix_a)# 求矩阵的秩,结果为2print(u)v = vector_a * vector_b# 使用*符号将两个向量相乘,是将两个向量中的元素分别相乘,也就是我们所讲到的哈达马乘积print(v)# [ 2  6 12]w = vector_a ** vector_bprint(w)# 使用二元运算符**对两个向量进行操作,结果为array([1, 8, 81],dtype = int32)# 表示将向量vector. a中元素对应vector. b中的元素值求幂运算。例如最终结果[1,8,81]可以表示为[1*1,2*2*2,3*3*3*3]# 求逆矩阵z = np.linalg.inv(matrix_a)print(z)'''[[-2.   1. ] [ 1.5 -0.5]]'''

    三、矩阵的高级函数-随机数矩阵

    Numpy除了为我们提供常规的数学计算函数和矩阵相关操作之外,还提供很多功能丰富的模块,随机数模块就是其中一部分。

    利用随机数模块可以生成随机数矩阵,比python自带的随机数模块功能还要强大。

    import numpy as np# 设置随机数种子np.random.seed()# 从[1,3)中生成一个整型的随机数,连续生成10个a = np.random.randint(1, 3, 10)print(a)# [1 1 1 2 1 1 1 1 2 2]# 若要连续产生[1,3}之间的浮点数,可以使用以下方法:# ①b = 2*np.random.random(10)+1print(b)'''[2.88458839 2.07004167 2.80814156 1.83247535 2.33649809 2.62763357 2.0549351  2.33464915 1.70562208 2.66257726]'''# ②c = np.random.uniform(1, 3, 10)print(c)'''[1.76967412 1.37703868 2.48838004 1.45986254 2.04487418 2.51107658 1.25673115 1.31416097 2.56218317 2.90575438]'''# 生成一个满足正态分布(高斯分布)的矩阵,其维度是4*4d = np. random.normal(size=(4, 4))print(d)'''[[ 0.76164366  0.11588368  0.49221559 -0.28222691] [ 0.47638143 -0.21197541 -1.0776362   0.49241666] [ 0.26038756 -0.20406522  1.11210954 -1.191425  ] [ 0.58255677  1.84047863 -0.21366512 -0.85425828]]'''# 随机产生10个n=5、p=0.5的二项分布数据:e = np.random.binomial(n=5, p=0.5, size=10)print(e)# [1 1 5 2 1 2 1 2 1 2]# 产生一个0到9的序列data = np.arange(10)print(data)# [0 1 2 3 4 5 6 7 8 9]# 从data数据中随机采集5个样本,采集过程是有放回的f = np.random.choice(data, 5)print(f)# [1 7 3 3 4]# 从data数据中随机采集5个样本,采集过程是没有放回的g = np.random.choice(data, 5, replace=False)print(g)# [8 9 1 5 0]# 对data进行乱序h = np.random.permutation(data)print(h)# [8 5 3 9 2 0 4 6 1 7]# 对data进行乱序,并替换为新的datanp.random.shuffle(data)print(data)# [9 7 0 3 8 5 2 1 4 6]

    以上就是"python的numpy模块使用实例分析"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

    结果 向量 数据 类型 元素 矩阵 生成 方法 数组 样本 随机数 模块 两个 函数 参数 维度 最大 也就是 序列 形式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 科技赋能下的互联网金融 互联网科技资迅 沃里互联网科技 重庆科技学院互联网 科技类的互联网平台 镁科技互联网资讯平台 成都玖崟互联网科技有限公司乐商圈怎么样 互联网科技博主是什么意思 成都铂石互联网科技做什么的 互联网科技产业特征 乌苏新华互联网科技做什么的 南博望互联网科技有限公司 互联网第三次科技革命特征 上海钢联属于互联网科技股吗 上海乐五互联网科技有限公司 福建互联网展示科技馆设计 互联网金融运营模式中的金融科技 众联互联网络科技 广东猫王互联网科技有限公司电话 河南真二互联网科技有限公司 互联网金融 科技金融 中国 科技 互联网 狮子座互联网科技 互联网科技视频素材 互联网科技中介 智腾互联网科技有限公司 互联网科技革命什么开始 兰石爱特工业互联网科技分公司 科技美学互联网 艺术
    0