什么是numpy?
Numpy是Numerical Python 的简称,它是python数值计算中最为重要的基础包.大多数计算包都提供了基于NumPy的科学函数功能,将NumPy的数组对象作为数据交换的通用语.
为什么要用Numpy
Numpy提供了一个非常易用的API,将数据传给底层语言编写的外部类库,再由外部类库将计算结果按照Numpy数组的方式返回,变得非常简单.Numpy本身不提供建模和科学函数,理解Numpy的数组以及基于数组的计算将帮助你更高效的使用基于数组的工具,比如Pandas.
在Numpy中:
- ndarry,一种高效多维数组,提供了基于数组的便捷算术操作以及灵活的广播功能.
- 对所有数据进行快速矩阵计算,而无须编写循环程序
- 对硬盘中数组数据进行读写的工具,并对内存映射文件进行操作.
- 线性代数,随机数生成以及傅里叶变换功能.
- 用于连接NumPy到c,c++和FORTRAN语言类库的C语言API
怎么用Numpy
Numpy主要用于数据分析:
- 在数据清理,清洗,构造子集,过滤,变换以及其他计算中进行快速的向量计算.
- 常见的数组计算,比sort,unique以及set操作.
- 高效的描述性统计和聚合/概述数据.
- 数据排列和相关数据操作,例如对异构数据进行merge 和 join.
- 使用数组表达式来表明条件逻辑,代替if-elif-else条件分支的循环.
- 分组数据操作
Numpy的数据分析如此重要,其中一个原因就是它对处理大量数组的数据非常有效:
- Numpy在内部将数据储存在连续的内存块上,这与其他的Python内建数据结构是不同的.Numpy的算法库是用C语言写的,所以在操作数据内存时,不需要任何类型的检查或者其他管理操作.Numpy数组使用的内存量也小于其他的Python内建序列.
- Numpy可以针对全量数组进行复杂计算而不用写Python循环
Numpy ndarray:多维数组对象
Numpy的核心特征之一就是多维数组对象----ndarray
.ndarray
是Python中一个快速,灵活的大型数据集容器.数组允许使用类似于标量的操作语法在整块数据上进行数学计算.
import numpy as np
data = np.random.randn(2,3)
print(data)
#[[-1.48808504 -0.12575993 -2.61587575]
# [ 0.18325062 1.95968089 -0.68765384]]
在python中,需要用Numpy的话,需要用标准导入式导入import numpy as np
在Numpy这个包中包含了大量与python内建函数重命名的函数.
一个ndarray
是一个通用的多维同类数据容器,其内部的每一个元素都是相同类型的.每一个数组都有一个shape
属性,用来描述ndarray
的结构.每一个数组都有一个dtype
属性,用来描述数组的数据类型.
data.shape
#(2,3)#(行,列)
data.dtype
#dtype('float64')
ndarray = Numpy数组 = 数组
如何生成一个ndarray
在生成一个数组的方法中最简单的是array
函数,array
函数接收任意的序列型对象,生成一个新的包含传递数据的Numpy数组.
data1 = [6,7.5,8,0,1]
arr1 = np.array(data1)
#array([6.,7,5,8.,0,1.])
在列表中输入的有整型和浮点型,生成ndarray时整型升级成浮点型,
data2 = [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
#array([[1,2,3,4],
# [5,6,7,8]])
除了用np.array还有其他函数可以创建新数组.例如zeros可以一次性创造全0数组,ones可以一次性创造全1数组.empty则可以创建一个没有初始化数值的数组.想要创建高维数组,则需要为shape传递一个元组.
np.zeros(3)
#array([0.,0.,0.])
np.zeros((2,3))
#array([[0.,0.,0.],
# [0.,0.,0.]])
arange
是Python内建函数range的数字版,返回一个数组
np.arange(3)
#array([0,1,2])
Numpy数据类型
数据类型,即dytpe,是一个特殊的对象,是ndarray
的元数据,即:表示数据的数据.
arr1 = np.array([1,2,3],dtype = np.float64)
arr2 = np.array([1,2,3],dtype = np.int32)
在Numpy中的数据类型与python中相同,比如int
,float
,str
,'bool',在数据分析中只需要记住这几类就行,但是在需要内存或硬盘是做更深入的存取操作时,尤其是大数据集时,才需要记住数据类型.
网友评论