Numpy的创建

Numpy介绍:

  • Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。
  • Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。
  • Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。
  • NumPy提供了一个N维数组类型ndarray,它描述了相同类型的"items"的集合
    Numpy的创建_第1张图片

Numpy介绍-数值计算库

  • num-numerical 数值化的
  • py-python
  • ndarray
    • n-任意个
    • d-dimension维度
    • array-数组
下面来思考一个问题?
  • 使用python列表可以存储一维数组,再通过列表的嵌套可以实现多维数组,那为什么还需要使用Numpy的ndarray呢???
ndarray与python原生list运算效率对比:
  • 这里我们通过一段代码运行来体会ndarray的好处
  • 先来准备数据:
    Numpy的创建_第2张图片
  • 从中我们看到ndarray的计算速度要快很多,节约了时间。
  • 机器学习的最大特点就是大量的数据运算,那么如果没有一个快速的解决方案,那可能现在python也在机器学习领域达不到好的效果。
    Numpy的创建_第3张图片
  • Numpy专门针对ndarray的操作和运算进行了设计,所以数组的存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显。
  • 思考:ndarray为什么可以这么快?

ndarray的优势

1、内存块风格

ndarray到底跟原生python列表有什么不同呢,请看一张图:
Numpy的创建_第4张图片

  • 从图中我们可以看出ndarray在存储数据的时候,数据与数据的地址都是连续的,这样就给使得批量操作数组元素时速度更快。
  • 这是因为ndarray中的所有元素的类型都是相同的,而Python列表中的元素类型时任意的,所以ndarray在存储元素时内存可以连续,而python原生list就只能通过寻址方式找到下一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list,但是科学计算中,Numpy的ndarray就可以省掉很多循环语句,代码使用方面比Python原生list简单的多。
2、ndarray支持并行化运算(向量化运算)
3、Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),对其数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。
  • ndarray的优势:
    • 存储风格
      • ndarray-相同类型-通用性不强
      • list-不同类型-通用性很强
    • 并行化运算
      • ndarray支持向量化运算
    • 底层语言
      • C语言,解除了GIL

ndarray属性===认识N维数组:

  • 数组属性反映了数组本身固有的信息。
    Numpy的创建_第5张图片
ndarray属性

Numpy的创建_第6张图片

查看数组形状属性:

在这里插入图片描述

  • 表示8行5列
查看数组的维度属性:

在这里插入图片描述

  • 表示是一个二位数组
查看数组中元素的数量:

在这里插入图片描述

  • 表示这个二维数组中总共有40个元素。
查看数组中元素的类型:

在这里插入图片描述

  • 表示是int32类型的,默认应该是int64才对,应该是现在版本升级改进了。
    在这里插入图片描述
查看一个数组元素的长度(字节):

在这里插入图片描述

  • 表示数组中一个元素占了4个字节,如果是int64类型的是8个字节。
    在这里插入图片描述

ndarray不同形状的认识:

准备不同形状的数组数据:
a = np.array([[1,2,3],[4,5,6]])                 # 二维数组
b = np.array([1,2,3,4])                      # 一维数组
c = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])   # 三维数组

Numpy的创建_第7张图片
Numpy的创建_第8张图片

查看这三个数组的形状:

Numpy的创建_第9张图片

理解三维数组:

  • 第一个2表示三维数组中有2个二维数组,
  • 第二个2表示每个二维数组有两个一维数组,
  • 第三个3表示每一个一维数组中有3个元素。
ndarray的类型扩展:

dtype是numpy.dtype类型,先看看对于数组来说都有哪些类型
Numpy的创建_第10张图片

可以在创建数组的时候指定类型:

Numpy的创建_第11张图片

  • 提示:numpy作为一款高效的计算工具,所以上面的字符串是不常用的,一般不用,字符串类型的处理可以使用pandas。
  • 注意:若不指定,整数默认是int32,小数默认float64
    Numpy的创建_第12张图片
在创建数组时指定类型的两种方式:

Numpy的创建_第13张图片

你可能感兴趣的:(numpy)