一、np.around()

np.around(a, decimals=0, out=None)

参数解析:
a: array_like,输入数据;
decimals: int,指定保留小数点后的位数;
out: ndarray,输出数组,与输入维度一致;

函数功能:

np.around()函数对输入浮点数执行5舍6入,5做特殊处理(小数点最后一位为5的舍入为与其值最接近的偶数值)。
代码如下(示例):

import numpy as np
np.around([1.3,1.5,2.5,2.6,3.4,3.5,4.1,4.9])
Out[21]: array([1., 2., 2., 3., 3., 4., 4., 5.])

np.around([1, 3, 4, 7, 11])
Out[22]: array([ 1,  3,  4,  7, 11])

np.around([1.94,1.55,2.76], decimals = 1)
Out[23]: array([1.9, 1.6, 2.8])

二、np.floor()

向下取整
代码如下(示例):

np.floor([1.3,1.5,2.5,2.6,3.4,3.5,4.1,4.9])
Out[26]: array([1., 1., 2., 2., 3., 3., 4., 4.])

三、np.ceil()

向上取整
代码如下(示例):

np.ceil([1.3,1.5,2.5,2.6,3.4,3.5,4.1,4.9])
Out[27]: array([2., 2., 3., 3., 4., 4., 5., 5.])

四、np.where()

numpy.where(condition[,x,y])

参数解析:
condition: array_llike,bool,如果为True,则产生x,否则产生y;
x,y:array_like,可选,要从中选择的值。x,y和条件需要可以广播到某种形状;

返回值:
out:ndarray或ndarray元组,如果同时指定了x和y,则输出数组包含x的元素,其中condition为True,其他元素来自y。如果只给出条件,则返回元组condition.nanzero(),条件为True的索引;

当数组是一维数组时,返回的值是一维的索引,所以只有一组索引数组
代码如下(示例):

x= np.arange(12)
np.where(x>5)
Out[48]: (array([ 6,  7,  8,  9, 10, 11], dtype=int64),)

当数组是多维数组时,满足条件的数组值返回的是值的位置索引,因此会有多组索引数组来表示值的位置,返回的第一个array表示第一维坐标,第二个array表示第二维坐标,依次类推,一一对应

代码如下(示例):

x= np.arange(24).reshape(2,3,4)
x
Out[51]: 
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
        
np.where(x>5)
Out[50]: 
(array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int64),
 array([1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64),
 array([2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))

当条件(condition)为多维数组时,根据条件中为True则选择x中相应的数值,为False选择y中相应的数值

代码如下(示例):

np.where([[False, True], [False, True]],
...          [[1, 2], [3, 4]],
...          [[9, 8], [7, 6]])
Out[31]: 
array([[9, 2],
       [7, 4]])

当参数中只给出条件时,则返回非零元素的索引:

代码如下(示例):

np.where([[0,1], [1,1]])
Out[53]: (array([0, 1, 1], dtype=int64), array([1, 0, 1], dtype=int64))

根据元素的值找到元素的具体位置

代码如下(示例):

x = np.arange(24).reshape(4, 6)
x
Out[55]: 
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23]])

positions = [2,3,5,7,17,19]
xins = np.isin(x, positions)
xins
Out[60]: 
array([[False, False,  True,  True, False,  True],
       [False,  True, False, False, False, False],
       [False, False, False, False, False,  True],
       [False,  True, False, False, False, False]])

np.where(xins)
Out[61]: 
(array([0, 0, 0, 1, 2, 3], dtype=int64),
 array([2, 3, 5, 1, 5, 1], dtype=int64))

参考:1.python numpy.where()函数的用法

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐