numpy是高性能科学计算和数据分析的基础包。其部分功能如下:
- ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。
- 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。
- 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
- 线性代数、傅里叶变换和随机数生成功能。
- 用于集成由C/C++和Fortran等语言编写的代码的工具。
- numpy提供了一个简单易用的C API,因此很容易将数据给由低级语言编写的外部库,外部库也能以numpy数组的形式将数据返回给python。这个功能使得python成为一种包装C/C++/Fortran历史代码库的选择,并使被包装库拥有一个动态的、易用的接口。
一、ndarray:一种多维数组对象,一个快速而灵活的大数据集容器。
ndarray是一个通用的同构数据多维容器,即:其中所有元素必须是相同类型的。每一个数组都有一个shape(一个表示各维度大小的元组)和一个dtype(一个用于说明数组类型的对象,):
1.创建数组的常见函数:
相关代码示例:
import numpy as np
data1=[1,2,3.3,4,5.5,6]
data2=[[1,2,3],[4,5,6],[7,8,9]]
arr1=np.array(data1) #return:array([ 1. , 2. , 3.3, 4. , 5.5, 6. ])
arr2=np.array(data2) #return:array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
arr2.ndim #返回维度:2,表明是二维数组
arr2.shape #返回数组各维度大小:(3,3)
#除非显示说明,np.array会为新建的数组推断出一个较为合适的数据类型,数据类型保存在dtype对象
arr1.dtype # dtype('float64'),表明数组对象类型是float64
arr2.dtype #dtype('int32'),表明数组对象类型是int32
#arange是python内置函数range的数组版:
np.arange(10) #return:array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#以下函数创建数组,数据类型默认为float64
np.zeros((2,3)) #array([[ 0., 0., 0.],[ 0., 0., 0.]])
#当要求数据类型不是float64时,可自己定义数据类型
np.ones((2,3),dtype=np.int) #array([[1, 1, 1],[1, 1, 1]])
np.zeros_like(data2) #return:array([[0, 0, 0],[0, 0, 0],[0, 0, 0]])
#np.empty()返回的不是全0数组,很多情况下,返回的是一些初始化的垃圾值,如下所示
np.empty((3,3,2))
"""
return:
array([[[ 4.67296746e-307, 1.69121096e-306],
[ 1.29061074e-306, 1.69119873e-306],
[ 1.78019082e-306, 8.34441742e-308]],
[[ 1.78022342e-306, 6.23058028e-307],
[ 9.79107872e-307, 6.89807188e-307],
[ 7.56594375e-307, 6.23060065e-307]],
[[ 1.78021527e-306, 8.34454050e-308],
[ 1.11261027e-306, 1.15706896e-306],
[ 1.33512173e-306, 1.21455192e+224]]]) """
#创建一个正方的N*N单位矩阵,(对角线为1,其余为0)
np.eye(3,dtype=np.int) #return:array([[1, 0, 0],[0, 1, 0],[0, 0, 1]])
np.identity(3,dtype=np.int) #return:array([[1, 0, 0],[0, 1, 0],[0, 0, 1]])
#转换数组数据类型
#调用astyp