【Python】NumPy数组和矢量计算

简介: 【1月更文挑战第26天】【Python】NumPy数组和矢量计算

 image.gif编辑

目录

一、NumPy的ndarray:一种多维数组对象:

1.NumPy安装:

2.检测安装是否成功:

二、数组创建:

1.array创建:

range的使用:

arange创建数组:

2.随机数创建:

随机整数:

dtype的使用:

3.创建正态分布数组:

创建指定期望和方差的正太分布:

三、ndarray对象:

创建ndarray数组的其他方式:

1.zeros:

2.ones:

3.empty:

4.linspace:

5.logspace:

四、切片和索引:

修改一维数组的形状:

数组的复制:

五、数组的相关操作:

1.改变数组得到维度:

2.数组的拼接:

水平方向拼接:

垂直方向拼接:

concatenate连接数组:

3.数组的分割:

4.数组的转置:

NumPy函数:

算数函数:

统计函数:


一、NumPy的ndarray:一种多维数组对象:

image.gif编辑

       NuPy(Numerical Python)是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等。

       其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组与矩阵运算,NumPy支持向量处理ndarray对象,提高程序运算速度。

       NumPy最重要的一个特点就是N维数组对象(ndarray),该对象是一个快速而灵活的大数据集容器。ndarray是一个通用的同构数据的多维容器,也就是说,ndarray中的所有元素必须是相同类型的数据。

       每个数据都有一个shap属性,定义了该ndarray的维度大小;一个dtype属性,定义了该ndarray的元素类型。

1.NumPy安装:

       使用Anaconda Prompt或者CMD命令窗口进行安装:

pip install numpy

image.gif

2.检测安装是否成功:

import numpy as np
a = np.arange(10)
print(a)
# type():返回当前参数的数据类型:
print(type(a))

image.gif

image.gif编辑


二、数组创建:

1.array创建:

       numpy模块的array函数可以生成多维数组。例如,如果要生成一个二维数组,需要向array函数传递一个列表类型的参数。每一个列表元素是一维的ndarray类型数组,作为二维数组的行。

       另外,通过ndarray类的shape属性可以获得数组每一维的元素个数(元组形式),也可以通过shape[n] 形式获得每一维的元素个数,其中n是维度,从0开始。

import numpy as np
a = np.array([1, 2, 3, 4], dtype=float, ndmin=3)
print(a)
print(type(a))

image.gif

# NumPy中的ndarray对象:
# 导入NumPy模块
import numpy as np
# 定义一个NumPy的ndarray对象
data = np.array([[1, 2, 3, 4], [5, 6, 7, 8]], np.int32)
# 输出ndarray数组中元素数据类型
print(data.dtype)
# 输出ndarray对象结构
print(data.shape)

image.gif

参数说明:

    • dtype:设置创建numpy数组的数据类型
    • ndmin:设置创建numpy数组的维度

    range的使用:

           range范围遵守左闭右开原则,包含start元素,不包含stop元素!

    range(start, stop, step)

    image.gif

    arange创建数组:

    arange(start, stop, step, dtype)

    image.gif

    image.gif编辑

    2.随机数创建:

           numpy.random.random(size = None):该方法返回 [ 0.0,1.0)范围的随机数。size指定数组形状(元素个数)。

    import numpy as np
    a = np.random.random(size=10)
    print(a)
    print(type(a))

    image.gif

    image.gif编辑

    import numpy as np
    # 创建一个二维数组:
    a = np.random.random(size=(2, 2))
    print(a)
    print(type(a))

    image.gif

    image.gif编辑

    随机整数:

    np.random.randint(low, hight=None, size=None, dtype="1")

    image.gif

    dtype的使用:

    import numpy as np
    # 使用dtype指定数据类型,np包含许多的数组类型
    a = np.random.randint(0, 10, size=(2, 3), dtype=np.int64)
    print(a)
    # dtype属性:当前数组中的元素值类型
    print(a.dtype)

    image.gif

    image.gif编辑

    3.创建正态分布数组:

           randn函数返回一个或一组样本,具有标准正态分布(期望为0,方差为1)。dn表格每个维度。返回值为指定维度的array

    np.random.randn(d0, d1, d2, ... ,dn)

    image.gif

    import numpy as np
    # 创建标准的正态分布:
    a = np.random.randn(2, 3, 4)
    print(a)

    image.gif

    image.gif编辑

    创建指定期望和方差的正太分布:

    import numpy as np
    # normal:创建指定期望和方差的正态分布;默认期望:loc=0.0;方差scale=1.0
    a = np.random.normal(0, 1, size=4)
    print(a)

    image.gif

    image.gif编辑


    三、ndarray对象:

           NumPy最重要的一个特点是其N维数组对象 ndarray,它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。

           ndarray对象是用于存放同类型元素的多维数组。

           ndarray中的每个元素在内存中都有相同存储大小的区域

           ndarray内部由以下内容组成:

      • 一个指向数据(内存或内存映射文件中的一块数据)的指针
      • 数据类型或dtype,描述在数组中的固定大小值的格子。
      • 一个表示数组形状(shape)的元组,表示各维度大小的元组

            NumPy的数组中比较重要ndarray对象属性有:

      image.gif编辑

      创建ndarray数组的其他方式:

             ndarray数组除了可以使用底层的ndarray构造函数来创建以外,也可以通过以下几种方式创建。

      1.zeros:

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

      numpy.zeros(shape, dtype, order="C")

      image.gif

      import numpy as np
      # 创建以0填充的数组:
      a = np.zeros(shape=(2, 3), dtype=float, order="C")
      print(a)

      image.gif

      image.gif编辑

      2.ones:

             numpy.ones:创建指定形状的数组,数组元素以1来填充:

      numpy.ones(shape, dtype, order="C")

      image.gif

      import numpy as np
      # 创建以1填充的数组:
      a = np.ones(shape=(2, 3), dtype=float, order="C")
      print(a)

      image.gif

      image.gif编辑

      3.empty:

             numpy.empty方法用来创建一个指定形状(shape)、数据类型(dtype)且初始化的数组,里面的元素的值是之前内存的值:

      numpy.empty(shape, dtype, order="C")

      image.gif

      image.gif编辑

      4.linspace:

             linspace函数用户创建一个一维数组,数组是一个等差数列构成的:

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

      image.gif

      image.gif编辑

        • endpoint:是否包含结束数值
        • retstep:是否显示生成的数组中间显示间距

        5.logspace:

               numpy.logspace函数用于创建一个等比数列:

        numpy.logspace(start, stop, endpoint, base, dtype=None)

        image.gif

        image.gif编辑


        四、切片和索引:

               ndarray对象的内容可以通过索引或者切片来访问和修改,与Python中list的切片操作一样。

               ndarray数组可以基于0-n的下标进行索引,并设置start,stop以及step参数进行,从原数组中割出一个新数组。

        [start:stop:step]

        image.gif

        修改一维数组的形状:

        array.reshap((数组格式))

        image.gif

        import numpy as np
        a = np.arange(1, 11)
        # 修改数组形状:
        a = a.reshape((5, 2))
        print(a)

        image.gif

        image.gif编辑

        数组的复制:

               所有切片取出来的数组,即使把他赋值给了新变量,他仍然拥有全部原来数组的视图。(切片是地址赋值,不是值传递,修改了切片数组中元素值,会影响原来数组)

               使用copy函数实现,值传递:

        numpy.copy(原数组)

        image.gif


        五、数组的相关操作:

        1.改变数组得到维度:

               处理数组的一项重要工作就是改变数组的维度,包含提高数组的维度和降低数组的维度,还包括数组的转置。NumPy提供的大量API可以很轻松地完成这些数组的操作。

               例如,通过reshape方法可以将一维数组变成二维、三维或者多维数组。

               通过ravel方法或flatten方法可以将多维数组变成一维数组。改变数组的维度还可以直接设置NumPy数组的shape属性(元组类型),通过resize方法也可以改变数组的维度。

               转化前后,数组的元素个数要一致!

        2.数组的拼接:

        image.gif编辑

        水平方向拼接:

               通过hstack函数可以将两个或者多个数组水平组合起来形成一个数组,那么什么叫做数组的水平组合。现在有两个2*3的数组A和B:

        image.gif编辑

               使用hstack函数将两个数组水平组合的代码如下:

        numpy.hstack([A, B])

        image.gif

        image.gif编辑

                最后,数组A和数组B在水平方向首尾连接起来,形成了一个新数组。

        垂直方向拼接:

               使用vstack函数,可以将多个数组进行垂直方向拼接:

        numpy.vstack((A, B))

        image.gif

        concatenate连接数组:

        numpy.concatenate((a1, a2, a3, ... ), axis)

        image.gif

        参数说明:

          • a1,a2,......:相同类型的数组
          • axis:沿着它连接数组的轴,默认为0

          3.数组的分割:

                 numpy.spit函数沿着特定的轴将数组分割为子数组:

          numpy.split(ary, indices_or_sections, axis)

          image.gif

          参数说明:

            • ary:被分割的数组
            • indices_or_sections:如果是一个整数,就用数平分切分,如果是一个数组,为沿轴切分的位置。
            • axis:沿着哪个维度进行切向,默认为0,横向切分。为1时纵向切分。

            4.数组的转置:

                   使用transpose进行数组的转置操作:

            numpy.transpose()

            image.gif


            NumPy函数:

            算数函【Python】NumPy数组和矢量计算数:

                   如果参与运算的两个对象都是ndarray,并且形状相同,那么会对位彼此之间进行(+

            - * / )运算。Numpy算术函数包含简单的加减乘除:add(),subtract(),multiply()和divide()。

            统计函数:

                   统计函数,用于从数组中查找最小元素,最大元素,百分位标准差和方差等:

            image.gif编辑

            image.gif编辑



            相关文章
            |
            3天前
            |
            机器学习/深度学习 数据采集 数据挖掘
            解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
            Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
            11 2
            |
            9天前
            |
            存储 数据处理 Python
            Python科学计算:NumPy与SciPy的高效数据处理与分析
            【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
            19 3
            |
            11天前
            |
            数据采集 数据可视化 数据处理
            如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
            本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
            30 5
            |
            9天前
            |
            存储 机器学习/深度学习 算法
            Python科学计算:NumPy与SciPy的高效数据处理与分析
            【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
            28 2
            |
            29天前
            |
            Python
            Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
            NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
            25 0
            Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
            |
            24天前
            |
            数据挖掘 索引 Python
            Python数据分析篇--NumPy--进阶
            Python数据分析篇--NumPy--进阶
            15 0
            |
            24天前
            |
            数据挖掘 索引 Python
            Python数据分析篇--NumPy--入门
            Python数据分析篇--NumPy--入门
            29 0
            |
            28天前
            |
            PyTorch 算法框架/工具 Python
            Pytorch学习笔记(十):Torch对张量的计算、Numpy对数组的计算、它们之间的转换
            这篇文章是关于PyTorch张量和Numpy数组的计算方法及其相互转换的详细学习笔记。
            30 0
            |
            2月前
            |
            机器学习/深度学习 数据处理 Python
            从NumPy到Pandas:轻松转换Python数值库与数据处理利器
            从NumPy到Pandas:轻松转换Python数值库与数据处理利器
            67 0
            |
            3月前
            |
            机器学习/深度学习 数据处理 计算机视觉
            NumPy实践宝典:Python高手教你如何轻松玩转数据处理!
            【8月更文挑战第22天】NumPy是Python科学计算的核心库,专长于大型数组与矩阵运算,并提供了丰富的数学函数。首先需安装NumPy (`pip install numpy`)。之后可通过创建数组、索引与切片、执行数学与逻辑运算、变换数组形状及类型、计算统计量和进行矩阵运算等操作来实践学习。NumPy的应用范围广泛,从基础的数据处理到图像处理都能胜任,是数据科学领域的必备工具。
            54 0
            下一篇
            无影云桌面