首页Python【Python数据分析】2...

【Python数据分析】2.Numpy多维数组对象ndarray介绍


本系列文章配套代码获取有以下三种途径:

  • 可以在以下网站查看,该网站是使用JupyterLite搭建的web端Jupyter环境,因此无需在本地安装运行环境即可使用,首次运行浏览器需要下载一些配置文件(大约20M):

https://returu.github.io/Python_Data_Analysis/lab/index.html
链接:https://pan.baidu.com/s/1MYkeYeVAIRqbxezQECHwcA?pwd=mnsj 提取码:mnsj
  • 前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/Python_Data_Analysis

—————————————————

1.Numpy库介绍:

Numpy是Numercial Python的简称,是一个开源的Python科学计算基础库。

  • 提供一个强大的N维数组对象ndarray,并提供了基于数组的算术操作及广播功能函数;

  • 整合C/C++/Fortran代码工具;

  • 线性代数、傅里叶变换、随机数生成等功能。

Numpy是Scipy、Pandas等数据处理或科学计算库的基础。

Numpy的引用直接使用以下语句即可:

1import numpy as np # 尽管别名可以省略或者修改,建议使用上述约定的别名

官方文档地址:https://numpy.org/doc/stable/index.html#

2.多维数组对象ndarray的设置原因:

Python中可以利用列表表示数组,那Numpy为什么还要设置ndarray那?

例如,计算A²+B²,其中A和B是一维数组。

在python语法中,需要利用循环结构,计算数组中的每个数据。

 1%%timeit
2def pysum():
3    a = list(range(1_000_000))
4    b = list(range(1_000_000))
5    c = []
6
7    for i in range(len(a)):
8        c.append(a[i]**2 + b[i]**3)
9    return c
10
11pysum()
12# 706 ms ± 17.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

而Numpy则是把一个一维数据作为单个数据,直接进行计算。

 1%%timeit
2def npsum():
3    a = np.array(list(range(1_000_000)))
4    b = np.array(list(range(1_000_000)))
5    c = a**2 + b**3
6    return c 
7
8
9npsum()
10# 170 ms ± 7.07 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

TIPS:%time: 在行模式下,代码运行一次所花费的时间。%%time:在单元模式下,代码运行一次所花费的时间。%timeit: 在行模式下,执行代码块若干次,取最佳结果。%%timeit: 在单元模式下,执行代码块若干次,取最佳结果

行模式:只对紧跟其后的代码进行测试。单元模式:用于代码块的测试。

从上面例子中可以看出,N维数组对象ndarray:

  • 数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据。
  • 设置专门的数组对象,经过优化,可以提升这类应用的运算速度(numpy底层是由C语言编写,计算速度更快)。
  • 数组对象采用相同的数据类型,有助于节省运算和存储空间(因为在科学计算中,一个维度所有数据的类型往往是相同的)。

3.多维数组对象ndarray:

ndarray是Python中一个快速、灵活的大型数据集容器,作为一个多维数组对象,由两部分构成:

  • 实际的数据;

  • 描述这些数据的元数据(数据维度、数据类型等):
    ndarray数组一般要求所有要素类型相同(同质),数组下标从0开始(但也有特殊情况)。
    轴(axis):保存数据的维度。
    秩(rank):轴的数量。


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments