数学函数和逻辑函数
10 向量化和广播
广播(Broadcasting)机制描述了 numpy 如何在算术运算期间处理具有不同形状的数组,让较小的数组在较大的数组上“广播”,以便它们具有
兼容的形状。
广播的规则
- 如果两个数组的维度数dim不相同,那么小维度数组的形状将会在左边补1。
- 如果shape维度不匹配,但是有维度是1,那么可以扩展维度是1的维度匹配另一个数组;
- 如果shape维度不匹配,但是没有任何一个维度是1,则匹配引发错误;
import numpy as np
x = np.arange(4)
y = np.ones((3, 4))
print(x.shape)
# (4,) print(y.shape)
# (3, 4) print((x + y).shape)
# (3, 4) print(x + y)
# [[1. 2. 3. 4.]
# [1. 2. 3. 4.]
# [1. 2. 3. 4.]]
11 数学函数
11.1 算术运算
11.1.1 numpy.add
11.1.2 numpy.subtract
11.1.3 numpy.multiply
11.1.4 numpy.divide
11.1.5 numpy.floor_divide
11.1.6 numpy.power
11.1.7 numpy.sqrt
11.1.8 numpy.square
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = x + 1
print(y)
print(np.add(x, 1))
# [2 3 4 5 6 7 8 9]
y = x - 1
print(y)
print(np.subtract(x, 1))
# [0 1 2 3 4 5 6 7]
y = x * 2
print(y)
print(np.multiply(x, 2))
# [ 2 4 6 8 10 12 14 16]
y = x / 2
print(y)
print(np.divide(x, 2))
# [0.5 1. 1.5 2. 2.5 3. 3.5 4. ]
y = x // 2
print(y)
print(np.floor_divide(x, 2))
# [0 1 1 2 2 3 3 4]
y = x ** 2
print(y)
print(np.power(x, 2))
x = np.arange(1, 5)
print(x)
# [1 2 3 4]
y = np.sqrt(x)
print(y)
# [1. 1.41421356 1.73205081 2. ]
print(np.power(x, 0.5))
# [1. 1.41421356 1.73205081 2. ]
y = np.square(x)
print(y)
# [ 1 4 9 16]
print(np.power(x, 2))
# [ 1 4 9 16]
11.2 三角函数
11.2.1 numpy.sin
11.2.2 numpy.cos
11.2.3 numpy.tan
11.2.4 numpy.arcsin
11.2.5 numpy.arccos
11.2.6 numpy.arctan
11.3 指数和对数
11.3.1 numpy.exp
11.3.2 numpy.log
11.3.3 numpy.exp2
11.3.4 numpy.log2
11.3.5 numpy.log10
11.4 加法函数、乘法函数
11.4.1 numpy.sum
numpy.sum(a[, axis=None, dtype=None, out=None, …])
返回沿axis的元素和
11.4.2 numpy.cumsum
numpy.cumsum(a, axis=None, dtype=None, out=None)
返回沿axis方向逐项累加的和
11.4.3 numpy.prod 乘积
numpy.prod(a[, axis=None, dtype=None, out=None, …])
返回给定axis上的元素之积
11.4.4 numpy.cumprod 累乘
numpy.cumprod(a, axis=None, dtype=None, out=None)
返回沿axis方向累乘的积
11.4.5 numpy.diff 差值
numpy.diff(a, n=1, axis=-1, prepend=np._NoValue, pend=np._NoValue)
沿着axis计算n次差值
- a:输入矩阵
- n:可选,代表要执行几次差值
- axis:默认是最后一个
11.5 取整
11.5.1 numpy.around 四舍五入
11.5.2 numpy.ceil 向上取整
11.5.3 numpy.floor 向下取整
11.6 其他
11.6.1 numpy.clip 裁剪
11.6.2 numpy.absolute numpy.abs
numpy.absolute(x, *args, **kwargs)
按元素计算绝对值
numpy.abs(x, *args, **kwargs)
absolute的简写…
11.6.3 numpy.sign
numpy.sign(x, *args, **kwargs)
返回元素对应的符号
12 逻辑函数
12.1 真值测试
12.1.1 numpy.all numpy.any
numpy.all(a, axis=None, out=None, keepdims=np._NoValue)
判断全部元素是否为真
numpy.any(a, axis=None, out=None, keepdims=np._NoValue)
判断其中是否有任意元素为真
12.2 数组内容
12.2.1 numpy.isnan
numpy.isnan(x, *args, **kwargs)
判断是否包含nan元素
12.3 逻辑运算
12.3.1 numpy.logical_not
12.3.2 numpy.logical_and
12.3.3 numpy.logical_or
12.3.4 numpy.logical_xor
【例】计算非x元素的真值。
import numpy as np
print(np.logical_not(3))
# False
print(np.logical_not([True, False, 0, 1]))
# [False True True False]
x = np.arange(5)
print(np.logical_not(x < 3))
# [False False False True True]
【例】计算x1 AND x2元素的真值。
print(np.logical_and(True, False))
# False
print(np.logical_and([True, False], [True, False]))
# [ True False]
print(np.logical_and(x > 1, x < 4))
# [False False True True False]
【例】逐元素计算x1 OR x2的真值。
print(np.logical_or(True, False))
# True print(np.logical_or([True, False], [False, False]))
# [ True False] print(np.logical_or(x < 1, x > 3))
# [ True False False False True]
【例】计算x1 XOR x2的真值,按元素计算。
print(np.logical_xor(True, False))
# True
print(np.logical_xor([True, True, False, False], [True, False, True, False]))
# [False True True False]
print(np.logical_xor(x < 1, x > 3))
# [ True False False False True]
print(np.logical_xor(0, np.eye(2)))
# [[ True False]
# [False True]]