1.NumPy中最重要的一个特点就是其N维数组对象,即ndarray(别名array)对象,该对象可以执行一些科学计算。
属性 | 说明 |
ndarray.ndim | 数组轴的个数 |
ndarray.shape | 一个整数的元组,表示每个维度上数组的大小,如n行m列数组,shape属性为(n,m) |
ndarray.size | 数组元素的个数,等于shape属性中元组元素的乘积 |
ndarray.dtype | 描述数组元素类型的对象 |
ndarray.itemsize | 数组中每个元素的大小 |
2.创建NumPy数组
- data=np.array([1,2,3]) 一维数组
- data=np.array([[1,2,3],[4,5,6]]) 二维数组
- 通过zeros()函数创建元素值都是0的数组;通过ones()函数创建元素值都为1的数组。
创建元素值全是0的数组
np.zeros((3, 4))
创建元素值全是1的数组
np.ones((3, 4))
通过empty()函数创建一个新的数组,该数组只分配了内存空间,它里面填充的元素都是随机的
创建元素值全是随机数的数组
np.empty((5, 2))
通过arange()函数可以创建一个等差数组,它的功能类似于range(),只不过arange()函数返回的结果是数组,而不是列表。
np.arange(1, 20, 5)
结果 array([ 1, 6, 11, 16])
3.查看数据类型
ndarray.dtype可以创建一个表示数据类型的对象
NumPy中常用的数据类型如右表所示。
类型 | 含义 |
bool | True或False |
int8 ,uint8 | 有符号和无符号的8位整数 |
int16,uint32 | 有符号和无符号的16位整数 |
int32 ,uint32 | 有符号和无符号的32位整数 |
int64 ,uint64 | 有符号和无符号的64位整数 |
float16 | 浮点数,小数(16位) |
float32 | 浮点数,小数(32位) |
float64 | 浮点数,小数(64位) |
complex64 | 复数,,32位浮点数表示实部和虚部 |
complex128 | 复数,,64位浮点数表示实部和虚部 |
object | Python对象 |
string_ | 固定长度的字符串类型 |
unicode | 固定长度的unicode类型 |
4.整数索引和切片的基本使用
对于一维数组来说,从表面上来看,它使用索引和切片的方式,与Python列表的功能相差不大。
在二维数组中,每个索引位置上的元素不再是一个标量了,而是一个一维数组。
如果想获取二维数组的单个元素,则需要通过形如“arr[x,y]”的索引来实现,其中x表示行号,y表示列号。
多维数组的切片是沿着行或列的方向选取元素的,我们可以传入一个切片,也可以传入多个切片,还可以将切片与整数索引混合使用。
5.花式(数组)索引的基本使用
6.将条件逻辑转为数组运算
NumPy的where()函数是三元表达式x if condition else y的矢量化版本。
如果希望对NumPy数组中的元素进行排序,可以通过sort()方法实现。
如果希望对任何一个轴上的元素进行排序,则需要将轴的编号作为sort()方法的参数传入。
all()函数用于判断整个数组中的元素的值是否全部满足条件,如果满足条件返回True,否则返回False。
any()函数用于判断整个数组中的元素至少有一个满足条件就返回True,否则就返回False。
7.唯一化及其他集合逻辑
针对一维数组,NumPy提供了unique()函数来找出数组中的唯一值,并返回排序后的结果。
in1d()函数用于判断数组中的元素是否在另一个数组中存在,该函数返回的是一个布尔型的数组
8.随机数模块
rand()函数隶属于numpy.random模块,它的作用是随机生成N维浮点数组。
seed( )函数可以保证生成的随机数具有可预测性,也就是说产生的随机数相同。