numpy的学习-04

数学函数与逻辑函数

1.数学函数

广播

对于不同形状的数组进行运算时,让较小的数组在较大的数组上进行“广播”,使得它们的形状兼容。
广播的规则:

  • 如果两个数组的维度数dim不相同,那么小维度数组的形状将会在左边补1;
  • 如果shape维度不匹配,但是有维度是1,那么可以扩展维度是1的维度匹配另一个数组;
  • 如果shape维度不匹配,但是没有任何一个维度是1,则匹配引发错误;

通用函数与聚合函数

通用函数(universal function)通常叫作ufunc,它对数组中的各个元素逐一进行操作。这表明,通用函数分别处理输入数组的每个元素,生成的结果组成一个新的输出数组。输出数组的大小跟输入数组相同。算术运算和三角函数都是通用函数。
聚合函数 是指对一组值(比如一个数组)进行操作,返回一个单一值作为结果的函数。因而,求数组所有元素之和的函数就是聚合函数。ndarray类实现了多个这样的函数。

算术运算

  • numpy.add(x1, x2, *args, **kwargs)
  • numpy.subtract(x1, x2, *args, **kwargs)
  • numpy.multiply(x1, x2, *args, **kwargs)
  • numpy.divide(x1, x2, *args, **kwargs)
  • numpy.floor_divide(x1, x2, *args, **kwargs) 对x1/x2向下取整
  • numpy.power(x1, x2, *args, **kwargs) x1的x2次方
    注意乘方的运算规则
#一维
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = x ** 2
print(y)
print(np.power(x, 2))
# [ 1  4  9 16 25 36 49 64]
#二维
x = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 35]])
y = x ** 2
print(y)
print(np.power(x, 2))
# [[ 121  144  169  196  225]
#  [ 256  289  324  361  400]
#  [ 441  484  529  576  625]
#  [ 676  729  784  841  900]
#  [ 961 1024 1089 1156 1225]]
  • numpy.sqrt(x, *args, **kwargs) 开根号
  • numpy.square(x, *args, **kwargs) 平方

三角函数

  • numpy.sin(x, *args, **kwargs)
  • numpy.cos(x, *args, **kwargs)
  • numpy.tan(x, *args, **kwargs)
  • numpy.arcsin(x, *args, **kwargs)
  • numpy.arccos(x, *args, **kwargs)
  • numpy.arctan(x, *args, **kwargs)

指数和对数

  • numpy.exp(x, *args, **kwargs)
  • Calculate the exponential of all elements in the input array.
  • numpy.log(x, *args, **kwargs)
  • numpy.exp2(x, *args, **kwargs) 2的x次方
  • numpy.log2(x, *args, **kwargs)
  • numpy.log10(x, *args, **kwargs)

加法、乘法函数

  • numpy.sum(a[, axis=None, dtype=None, out=None, …])其中axis=i时,表示numpy沿着第i个下标变化的方向进行操作。二维中,i=0,第0个下标的变化方向是向下,则沿着纵轴相加;i=1,第1个下表的变化方向是向右,则沿着横轴相加。
  • numpy.cumsum(a, axis=None, dtype=None, out=None)返回的是累加和;axis同上解释。
  • numpy.prod(a[, axis=None, dtype=None, out=None, …])乘积
  • numpy.cumprod(a, axis=None, dtype=None, out=None)累乘
  • numpy.diff(a, n=1, axis=-1, prepend=np._NoValue, append=np._NoValue)差值(沿着指定轴计算第N维的离散差值), 即newa[i] = a[i+1] - a[i];n表示要执行几次差值;axis默认是-1,在二维数组中,axis=-1与axis=1是相同的,解释同上;
A = np.arange(2, 14).reshape((3, 4))
A[1, 1] = 8
print(A)
# [[ 2  3  4  5]
#  [ 6  8  8  9]
#  [10 11 12 13]]
print(np.diff(A))  #从右向左减
# [[1 1 1]
#  [2 0 1]
#  [1 1 1]]
print(np.diff(A,axis=1))
# [[1 1 1]
#  [2 0 1]
#  [1 1 1]]
print(np.diff(A, axis=0))   # 从下向上减
# [[4 5 4 4]
#  [4 3 4 4]]

四舍五入

  • numpy.around(a, decimals=0, out=None) 将a保留decimals位小数
  • numpy.ceil(x, *args, **kwargs) 向上取整
  • numpy.floor(x, *args, **kwargs) 向下取整

杂项

  • numpy.clip(a, a_min, a_max, out=None, **kwargs) 裁剪(限制)数组a中的值;限制a中元素最大值和最小值,若元素值小于最小值,则取最小值作为该元素值,若元素值大于最大值,则取最大值作为该元素值。
  • numpy.absolute(x, *args, **kwargs)=numpy.abs(x, *args, **kwargs) 取x的绝对值
  • numpy.sign(x, *args, **kwargs) 符号函数;即x<0,返回-1;x=0,返回0;x>0,返回1。

2.逻辑函数

真值测试

  • numpy.all(a, axis=None, out=None, keepdims=np._NoValue) 在给定轴上测试所有a元素是否为真(用于判断整个数组中的元素的值是否全部满足条件,如果满足条件返回True,否则返回False)
  • numpy.any(a, axis=None, out=None, keepdims=np._NoValue) 在给定轴上测试a是否含有元素为真(用于判断整个数组中的元素至少有一个满足条件就返回True,否则返回False)

逻辑运算

  • numpy.logical_not(x, *args, **kwargs) 非
  • numpy.logical_and(x1, x2, *args, **kwargs) 与
  • numpy.logical_or(x1, x2, *args, **kwargs) 或
  • numpy.logical_xor(x1, x2, *args, **kwargs) 异或

对照

  • numpy.greater(x1, x2, *args, **kwargs)
  • numpy.greater_equal(x1, x2, *args, **kwargs)
  • numpy.equal(x1, x2, *args, **kwargs)
  • numpy.not_equal(x1, x2, *args, **kwargs)
  • numpy.less(x1, x2, *args, **kwargs)
  • numpy.less_equal(x1, x2, *args, **kwargs)
  • numpy.isclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False)
  • numpy.allclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False)

你可能感兴趣的:(自学,numpy,python)