Numpy概述

简介: Numpy概述

NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。

1.1.1. Why NumPy?
一个强大的N维数组对象ndarray,具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组
用于集成由C、C++、Fortran等语言类库的C语言 API
线性代数、随机数生成以及傅里叶变换功能。
用于对整组数据进行快速运算的标准数学函数(无需编写循环),支持大量的数据运算
是众多机器学习框架的基础库
Tips:Python的面向数组计算可以追溯到1995年,Jim Hugunin创建了Numeric库。接下来的10年,许多科学编程社区纷纷开始使用Python的数组编程,但是进入21世纪,库的生态系统变得碎片化了。2005年,Travis Oliphant从Numeric和Numarray项目整了出了NumPy项目,进而所有社区都集合到了这个框架下。

NumPy之于数值计算特别重要的原因之一,是因为它可以高效处理大数组的数据。这是因为:

NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。比起Python的内置序列,NumPy数组使用的内存更少。
NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。
我们来直观感受一下numpy的运行速度:

导入numpy

我们将依照标准的Numpy约定,即总是使用import numpy as np

当然你也可以为了不写np, 而直接在代码中使用from numpy import *,

但是建议你最好还是不要养成这样的坏习惯。

import numpy as np

生成一个numpy对象, 一个包含一百万整数的数组

np_arr = np.arange(1000000)

一个等价的Python列表:

py_list = list(range(1000000))
对各个序列分别平方操作(%time是ipython的特殊功能,用于测试语句运行的时间需要安装ipython, pip install ipython)

%time for _ in range(10): np_arr2 = np_arr ** 2
CPU times: user 13.1 ms, sys: 5.62 ms, total: 18.8 ms Wall time: 17.7 ms

%time for _ in range(10): py_list2 = [x ** 2 for x in py_list]
CPU times: user 3.06 s, sys: 173 ms, total: 3.24 s Wall time: 3.25 s 由上述代码可以看出,基于NumPy的算法要比纯Python快10到100倍(甚至更快),并且使用的内存更少

  1. 创建ndarray

NumPy最重要的一个特点就是ndarray(N-dimensional array),即N维数组),该对象是一个快速而灵活的大数据集容器。你可以利用这种数组对整块数据执行一些数学运算,其语法跟标量元素之间的运算一样。

创建numpy数组的方式

import numpy as np
np.__version__
'1.15.2'
nparr = np.array([i for i in range(10)])
nparr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
nparr2 = np.array(list('abcdefg'))
nparr2
array(['a', 'b', 'c', 'd', 'e', 'f', 'g'], dtype='<U1')
nparr3 = np.array([[11, 22, 33, 44], [10, 20, 30, 40]])
nparr3
array([[11, 22, 33, 44],

   [10, 20, 30, 40]])

2.1.1. arange创建数组
arange函数是python内置函数range函数的数组版本.

产生0-9共10个元素

ndarray = np.arange(10)
ndarray
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

产生从10-19共10个元素

ndarray1 = np.arange(10, 20)

产生10 12 14 16 18, 2为step

ndarray2 = np.arange(10, 20, 2)
ndarray2
array([10, 12, 14, 16, 18])

ndarray2的形状

ndarray2.shape
(5,)

相关文章
|
9月前
|
算法 数据挖掘 Python
Scipy 高级教程——稀疏矩阵
Scipy 高级教程——稀疏矩阵【1月更文挑战第10篇】
266 0
|
6月前
|
Python
NumPy 教程 之 Numpy 数组操作 29
NumPy 提供多种数组操作函数,如修改形状、翻转和连接等。本教程重点介绍元素的添加与删除,包括 `resize`、`append`、`insert` 和 `delete` 函数。`numpy.delete` 用于从数组中删除指定元素,参数包括 `arr`(输入数组)、`obj`(待删元素)和 `axis`(删除轴)。示例展示了如何使用 `numpy.delete` 删除一维和二维数组中的元素。
46 4
|
6月前
|
索引 Python
NumPy 教程 之 NumPy 高级索引 4
NumPy 提供了高级索引方式,包括整数数组索引、布尔索引及花式索引。布尔索引可通过布尔数组筛选出满足条件(如大于某个值)的元素
33 3
|
6月前
|
索引 Python
NumPy 教程 之 NumPy 高级索引 9
NumPy高级索引包括整数数组索引、布尔索引及花式索引。花式索引使用整数数组作为索引,根据这些值选择目标数组的元素或行。与切片不同,它总是返回新数组。
43 2
|
6月前
|
Python
NumPy 教程 之 Numpy 数组操作 19
本教程介绍Numpy数组操作,涵盖数组形状修改、翻转、维度调整、连接与分割以及元素增删等关键技能。重点讲解`numpy.vstack`函数,该函数可将多个数组沿垂直方向堆叠。示例展示了如何使用`vstack`将两个2D数组堆叠成一个更大的数组,适用于数据整合场景。
48 2
|
7月前
|
索引 Python
NumPy 教程 之 NumPy 高级索引 2
NumPy高级索引包括整数数组索引、布尔索引等。整数数组索引允许通过一个整数数组访问另一个数组的元素,适用于复杂的数据选取与操作。
41 2
|
6月前
|
Python
【Python-Numpy】numpy.stack()的解析与使用
本文介绍了numpy的np.stack()函数,它用于在指定轴上增加数组的维度,通过不同轴参数可以改变张量的形状,例如axis=0会将形状变为(N, A, B),而axis=-1可以实现数组的转置。
201 0
|
8月前
|
数据挖掘 数据处理 C语言
18. Python 数据处理之 Numpy
18. Python 数据处理之 Numpy
72 2
|
9月前
|
vr&ar Python
轻松掌握Numpy日常用法,体验Numpy之快(二)
轻松掌握Numpy日常用法,体验Numpy之快(二)
|
9月前
|
存储 机器学习/深度学习 并行计算
轻松掌握Numpy日常用法,体验Numpy之快(一)
轻松掌握Numpy日常用法,体验Numpy之快(一)