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([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([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.])
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))