1. 通用函数
在上一篇文章《Python常用库(六):科学计算库Numpy[上篇]:创建、访问、赋值》中学习了Numpy
的创建、访问、赋值。接下来学习数组的其他函数,Numpy
提供了一系列操作数组的函数,通常称这种函数为通用函数(ufunc
); 可以直接作用在数组中的每个元素(无需遍历) 。
@注意: 通用函数(
ufunc
)是NumPy
中的一个重要概念,而不是一个具体的库,ufunc
是universal function
的缩写。
2. 元素查找
2.1 np.where
numpy.where
根据给定条件返回数组中满足条件元素,对应的索引。它的语法如下:
|
a. 参数说明:
condition
:一个布尔型数组或条件表达式,指定了要检查的条件。x
:可选参数,表示满足条件的元素替换为该值,默认为None
。y
:可选参数,表示不满足条件的元素替换为该值,默认为None
。
numpy.where
返回一个新的数组,其中满足条件的元素被替换为 x
,不满足条件的元素被替换为 y
。如果只传入 condition
参数,则返回满足条件的元素的索引。
b. 使用示例:
|
3. 逻辑判断
3.1 np.all
numpy.all()
函数用于检查数组中的所有元素是否满足给定条件。如果数组中的所有元素都满足条件,则返回 True
,否则返回 False
。语法如下:
|
a. 参数说明:
condition
:一个条件表达式,可以是比较运算、逻辑运算等。axis
参数是可选的,用于指定沿着哪个轴进行计算.
b. 使用示例:
|
3.2 np.any
np.any
函数用于判断数组中是否存在满足某个条件的元素。它返回一个布尔值,如果存在满足条件的元素,则返回True
,否则返回False
。
np.any
函数的语法如下:
|
a. 参数说明:
axis
:沿着指定的轴进行操作,默认为None
,表示对整个数组进行操作。out
:指定输出结果的数组。keepdims
:如果设置为True
,则保持原始数组的维度不变;如果设置为False
,则将缩减的维度删除。where
:可选参数,用于指定额外的条件。
b. 使用示例:
|
4. 数组排序
4.1 sort
np.sort()
用于对数组进行排序。返回原始数组的已排序副本,并且不会改变原始数组的顺序。
|
a. 参数说明:
axis
: 表示沿着指定轴排序,默认值为-1
,表示沿着最后一个轴进行排序。kind
: 表示使用哪种算法进行排序,默认快速排序算法(quicksort
),也可以选择其他算法(mergesort
:归并排序、heapsort
:堆排序)。order
: 当数组是结构化或复合类型时,可以指定排序的字段,默认None
:表示按照数组中的元素正序排序
b. 使用示例:
|
5. 数组分割
5.1 np.array_split
np.array_split
: 用于将一个数组分割成多个子数组。函数的语法如下:
|
a.参数说明:
arr
:要分割的数组。indices_or_sections
:指定分割点的位置。可以是一个整数,表示要分成几个等份;也可以是一个由分割点位置组成的列表,表示按照这些位置进行分割。axis
:指定在哪个轴上进行分割,行(0
)、列(1
) ;默认为0
,表示按行进行分割。
b.使用示例:
|
5.2 np.dsplit
np.dsplit
函数可以将多维数组,以垂直方向(沿着行)进分割成多个子数组,函数签名如下:
|
a. 参数说明:
ary
:要分割的多维数组。indices_or_sections
:可以是整数或一组整数,用于指定分割的位置。如果是整数,表示将数组分成等长的子数组。如果是一组整数,表示具体的划分位置;如[1,3]
:代表分割[0,1)、[1、3)、[3、最后)
b. 使用示例:
|
5.3 np.hsplit
np.hsplit
函数可以将多维数组,以水平方向(沿着列)进分割成多个子数组,函数签名如下:
|
a. 参数说明:
ary
:要分割的数组。indices_or_sections
:可以是整数或一组整数,用于指定分割的位置。如果是整数,表示将数组分成等长的子数组。如果是一组整数,表示具体的划分位置。
b.使用示例:
|
6. 数组拼接
6.1 np.dstack
np.dstack
函数可以将多个数组,按照列拼接成更高一维度的数组
b. 使用示例:
|
6.2 np.hstack
np.hstack
函数用于在水平方向(按列)堆叠数组,也就是将多个数组按列连接起来。
|
7. 维度转换
7.1 一维转多维
np.atleast_2d
: 用于将输入的数组转成二维数组,如果输入数组是二维,则输出不变;np.atleast_3d
: 用于将输入的数组转成三维数组,如果输入数组是三维,则输出不变;
|
7.2 多维转一维
在NumPy
中,你可以使用flatten()
方法或ravel()
方法来将二维或多维数组转换为一维数组。这两种方法的主要区别如下:
flatten()
方法返回的是原始数组的副本,因此对返回的数组的修改不会影响原始数组。ravel()
方法返回的是原始数组的视图(引用),如果对返回的数组进行修改,可能会影响原始数组。
|