当前位置:

首页 > 编程开发 > Python NumPy数组的基本操作方法有哪些?

Python NumPy数组的基本操作方法有哪些?

Numpy中的N维数组(ndarray)Numpy中的数组是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。在Numpy中,数组的维数称为数组的秩。给出数组沿每个维的大小的整数元组称为数组的形状。Numpy中的数组类称为ndarray。Numpy数组中的元素可以使用方括号访问,并且可以使用嵌套的Python列表进行初始化。例子:[[1,2,3],[4,2,5]]Here,rank=2(asitis2-dimensionalorithas2axes)Firstdimension(axis)le

本文目录

    Numpy中的N维数组(ndarray)

    Numpy 中的数组是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。在 Numpy 中,数组的维数称为数组的秩。给出数组沿每个维的大小的整数元组称为数组的形状。Numpy 中的数组类称为ndarray。Numpy 数组中的元素可以使用方括号访问,并且可以使用嵌套的 Python 列表进行初始化。

    例子 :

    [[ 1, 2, 3],
          [ 4, 2, 5]]
    
    Here, rank = 2 (as it is 2-dimensional or it has 2 axes)
    First dimension(axis) length = 2, second dimension has length = 3
    overall shape can be expressed as: (2, 3)
    # 演示基本数组特征的 Python 程序
    import numpy as np
     
    # 创建数组对象
    arr = np.array( [[ 1, 2, 3],
                     [ 4, 2, 5]] )
     
    # arr 对象的打印类型
    print("Array is of type: ", type(arr))
     
    # 打印数组维度(轴)
    print("No. of dimensions: ", arr.ndim)
     
    # 阵列的打印形状
    print("Shape of array: ", arr.shape)
     
    # 数组的打印大小(元素总数)
    print("Size of array: ", arr.size)
     
    # 打印数组中元素的类型
    print("Array stores elements of type: ", arr.dtype)

    输出 :

    Array is of type:  
    No. of dimensions:  2
    Shape of array:  (2, 3)
    Size of array:  6
    Array stores elements of type:  int64

    数组创建

    在 NumPy 中有多种创建数组的方法。

    • 例如,您可以使用array函数从常规 Python列表或元组创建一个数组。 结果数组的类型是从序列中元素的类型推导出来的。****

    • 通常,数组的元素最初是未知的,但它的大小是已知的。因此,NumPy 提供了几个函数来创建具有初始占位符内容的数组。这些最大限度地减少了增长阵列的必要性,这是一项昂贵的操作。
      例如:  np.zeros、np.ones、np.full、np.empty 等。

    • 为了创建数字序列,NumPy 提供了一个类似于 range 的函数,它返回数组而不是列表。

    • arange: 返回给定间隔内均匀分布的值。步长是指定的。

    • linspace: 返回给定间隔内均匀分布的值。编号_ 的元素被返回。

    • 重塑数组: 我们可以使用reshape方法来重塑数组。考虑一个形状为 (a1, a2, a3, ..., aN) 的数组。我们可以重新整形并将其转换为另一个形状为 (b1, b2, b3, ..., bM) 的数组。唯一需要的条件是:
      a1 x a2 x a3 … x aN = b1 x b2 x b3 … x bM 。(即数组的原始大小保持不变。)

    • 扁平化数组: 我们可以使用扁平化方法将数组的副本折叠成一维。它接受order参数。默认值为“C”(用于行优先顺序)。使用“F”表示列主要顺序。

    注意: 数组的类型可以在创建数组时显式定义。

    # 演示数组创建技术的 Python 程序
    import numpy as np
     
    # 从浮点类型的列表创建数组
    a = np.array([[1, 2, 4], [5, 8, 7]], dtype = 'float')
    print ("Array created using passed list:\n", a)
     
    # 从元组创建数组
    b = np.array((1 , 3, 2))
    print ("\nArray created using passed tuple:\n", b)
     
    # 创建一个全为零的 3X4 数组
    c = np.zeros((3, 4))
    print ("\nAn array initialized with all zeros:\n", c)
     
    # 创建一个复杂类型的常量值数组
    d = np.full((3, 3), 6, dtype = 'complex')
    print ("\nAn array initialized with all 6s."
                "Array type is complex:\n", d)

    输出 :

    Array created using passed list:
     [[ 1.  2.  4.]
     [ 5.  8.  7.]]

    Array created using passed tuple:
     [1 3 2]

    An array initialized with all zeros:
     [[ 0.  0.  0.  0.]
     [ 0.  0.  0.  0.]
     [ 0.  0.  0.  0.]]

    An array initialized with all 6s. Array type is complex:
     [[ 6.+0.j  6.+0.j  6.+0.j]
     [ 6.+0.j  6.+0.j  6.+0.j]
     [ 6.+0.j  6.+0.j  6.+0.j]]

    数组索引

    了解数组索引的基础知识对于分析和操作数组对象很重要。NumPy 提供了许多方法来进行数组索引。

    • 切片: 就像 python 中的列表一样,NumPy 数组可以切片。由于数组可以是多维的,因此您需要为数组的每个维度指定一个切片。

    • 整数数组索引: 在此方法中,传递列表以对每个维度进行索引。完成对应元素的一对一映射以构造一个新的任意数组。

    • 布尔数组索引: 当我们想从数组中选择满足某些条件的元素时使用此方法。

    # 在 numpy 中演示索引的 Python 程序
    import numpy as np
     
    # 一个示例数组
    arr = np.array([[-1, 2, 0, 4],
                    [4, -0.5, 6, 0],
                    [2.6, 0, 7, 8],
                    [3, -7, 4, 2.0]])
     
    # 切片数组
    temp = arr[:2, ::2]
    print ("Array with first 2 rows and alternate"
                        "columns(0 and 2):\n", temp)
     
    # 整数数组索引示例
    temp = arr[[0, 1, 2, 3], [3, 2, 1, 0]]
    print ("\nElements at indices (0, 3), (1, 2), (2, 1),"
                                        "(3, 0):\n", temp)
     
    # 布尔数组索引示例
    cond = arr > 0 # cond is a boolean array
    temp = arr[cond]
    print ("\nElements greater than 0:\n", temp)

    输出 :

    Array with first 2 rows and alternatecolumns(0 and 2):
     [[-1.  0.]
     [ 4.  6.]]

    Elements at indices (0, 3), (1, 2), (2, 1),(3, 0):
     [ 4.  6.  0.  3.]

    Elements greater than 0:
     [ 2.   4.   4.   6.   2.6  7.   8.   3.   4.   2. ]

    基本操作

    NumPy 提供了大量的内置算术函数。

    对单个数组的操作: 我们可以使用重载的算术运算符对数组进行元素操作以创建一个新数组。在 +=、-=、*= 运算符的情况下,将修改现有数组。

    # 演示单个数组的基本操作的 Python 程序
    import numpy as np
     
    a = np.array([1, 2, 5, 3])
     
    # 每个元素加 1
    print ("Adding 1 to every element:", a+1)
     
    # 从每个元素中减去 3
    print ("Subtracting 3 from each element:", a-3)
     
    # 将每个元素乘以 10
    print ("Multiplying each element by 10:", a*10)
     
    # 平方每个元素
    print ("Squaring each element:", a**2)
     
    # 修改现有数组
    a *= 2
    print ("Doubled each element of original array:", a)
     
    # 数组转置
    a = np.array([[1, 2, 3], [3, 4, 5], [9, 6, 0]])
     
    print ("\nOriginal array:\n", a)
    print ("Transpose of array:\n", a.T)

    输出 :

    Adding 1 to every element: [2 3 6 4]
    Subtracting 3 from each element: [-2 -1  2  0]
    Multiplying each element by 10: [10 20 50 30]
    Squaring each element: [ 1  4 25  9]
    Doubled each element of original array: [ 2  4 10  6]

    Original array:
     [[1 2 3]
     [3 4 5]
     [9 6 0]]
    Transpose of array:
     [[1 3 9]
     [2 4 6]
     [3 5 0]]

    一元运算符:许多一元运算作为 ndarray类的方法提供。这包括 sum、min、max 等。这些函数也可以通过设置轴参数来逐行或逐列应用。

    # 在 numpy 中演示一元运算符的 Python 程序
    import numpy as np
     
    arr = np.array([[1, 5, 6],
                    [4, 7, 2],
                    [3, 1, 9]])
     
    # 数组的最大元素
    print ("Largest element is:", arr.max())
    print ("Row-wise maximum elements:",
                        arr.max(axis = 1))
     
    # 数组的最小元素
    print ("Column-wise minimum elements:",
                            arr.min(axis = 0))
     
    # 数组元素之和
    print ("Sum of all array elements:",
                                arr.sum())
     
    # 每行的累积总和
    print ("Cumulative sum along each row:\n",
                            arr.cumsum(axis = 1))

    输出 :

    Largest element is: 9
    Row-wise maximum elements: [6 7 9]
    Column-wise minimum elements: [1 1 2]
    Sum of all array elements: 38
    Cumulative sum along each row:
    [[ 1  6 12]
     [ 4 11 13]
     [ 3  4 13]]

    二元运算符: 这些操作适用于数组元素并创建一个新数组。您可以使用所有基本的算术运算符,如 +、-、/、等。如果是 +=、-=、  = 运算符,则会修改现有数组。

    # 在 Numpy 中演示二元运算符的 Python 程序
    import numpy as np
     
    a = np.array([[1, 2],
                [3, 4]])
    b = np.array([[4, 3],
                [2, 1]])
     
    # 添加数组
    print ("Array sum:\n", a + b)
     
    # 乘法数组(元素乘法)
    print ("Array multiplication:\n", a*b)
     
    # 矩阵乘法
    print ("Matrix multiplication:\n", a.dot(b))

    输出:

    Array sum:
    [[5 5]
     [5 5]]
    Array multiplication:
    [[4 6]
     [6 4]]
    Matrix multiplication:
    [[ 8  5]
     [20 13]]

    通用函数 (ufunc):  NumPy 提供熟悉的数学函数,例如 sin、cos、exp 等。这些函数还对数组进行元素操作,生成数组作为输出。

    注意: 我们上面使用重载运算符所做的所有操作都可以使用 ufunc 完成,例如 np.add、np.subtract、np.multiply、np.divide、np.sum 等。

    # 在 numpy 中演示通用函数的 Python 程序
    import numpy as np
     
    # 创建一个正弦值数组
    a = np.array([0, np.pi/2, np.pi])
    print ("Sine values of array elements:", np.sin(a))
     
    # exponential values
    a = np.array([0, 1, 2, 3])
    print ("Exponent of array elements:", np.exp(a))
     
    # square root of array values
    print ("Square root of array elements:", np.sqrt(a))

    输出:

    Sine values of array elements: [  0.00000000e+00   1.00000000e+00   1.22464680e-16]
    Exponent of array elements: [  1.           2.71828183   7.3890561   20.08553692]
    Square root of array elements: [ 0.          1.          1.41421356  1.73205081]

    数据类型

    每个 ndarray 都有一个关联的数据类型 (dtype) 对象。这个数据类型对象(dtype)告诉我们数组的布局。这意味着它为我们提供了以下信息:

    • 数据类型(整数、浮点数、Python 对象等)

    • 数据大小(字节数)

    • 数据的字节顺序(小端或大端)

    • 如果数据类型是子数组,它的形状和数据类型是什么。

    ndarray的值存储在缓冲区中,可以将其视为连续的内存字节块。所以这些字节将如何被解释由 dtype 对象给出。

    每个 Numpy 数组都是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。每个 ndarray 都有一个关联的数据类型 (dtype) 对象。

    此数据类型对象 (dtype) 提供有关数组布局的信息。ndarray 的值存储在缓冲区中,可以将其视为可以由 dtype 对象解释的连续内存字节块。Numpy 提供了大量可用于构造数组的数值数据类型。

    在创建数组时,Numpy 会尝试猜测数据类型,但构造数组的函数通常还包含一个可选参数来显式指定数据类型。

    # Python Program to create a data type object
    import numpy as np
     
    # np.int16 is converted into a data type object.
    print(np.dtype(np.int16))

    输出:

    int16

    # Python Program to create a data type object 
    # containing a 32 bit big-endian integer
    import numpy as np
     
    # i4 represents integer of size 4 byte
    # > represents big-endian byte ordering and
    # < represents little-endian encoding.
    # dt is a dtype object
    dt = np.dtype('>i4')
     
    print("Byte order is:",dt.byteorder)
     
    print("Size is:",dt.itemsize)
     
    print("Data type is:",dt.name)

    输出:

    Byte order is: >
    Size is: 4
    Name of data type is: int32

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python Numpy
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。