今天的文章和大家聊聊 Python Numpy 位运算和算术函数,本文将分两部分做详细描述。
Numpy 位运算
NumPy包中,可用位操作函数进行位运算,以 bitwise_
开头的函数是位运算函数。
NumPy 位运算函数如下:
函数 | 描述 |
---|---|
bitwise_and | 对数组元素执行位与运算 |
bitwise_or | 对数组元素执行位或运算 |
invert | 按位取反(位非运算) |
left_shift | 向左移动二进制表示的位(左移位) |
right_shift | 向右移动二进制表示的位(右移位) |
值得注意的是: 位运算同样可以使用操作符进行计算,分别是使用 “&”、 “~”、 “ | ” 和 “^” 等。 |
1、bitwise_and
bitwise_and() 函数对数组中整数的二进制形式执行位与运算。
实例:
1 |
|
输出结果:
1 |
|
位与运算规律如下:
A | B | AND |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
13 和 17 的位与运算规律运算如下:
1 | 1 | 0 | 1 | ||
---|---|---|---|---|---|
1 | 0 | 0 | 0 | 1 | |
AND | |||||
0 | 0 | 0 | 0 | 1 |
所以 13 和 17 位与运算结果为 1
2、bitwise_or
bitwise_or()函数对数组中整数的二进制形式执行位或运算。
实例:
1 |
|
输出结果为:
1 |
|
位或运算规律如下:
A | B | OR |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
运算结果为:
1 | 1 | 0 | 1 | ||
---|---|---|---|---|---|
OR | |||||
1 | 0 | 0 | 0 | 1 | |
1 | 1 | 1 | 0 | 1 |
最后的运算结果为:
29
, 即数字 29 的二进制为 11101
,正是以上实例或运算结果。
3、invert
invert() 函数是对数值进行位非操作,位非即数值的取反操作。 invert() 函数对数组中整数进行位取反运算,即 0 变成 1,1 变成 0。
对于有符号整数,取该数二进制数的补码,然后 +1;二进制数最高位为0表示正数,最高位为 1 表示负数。
实例:
1 |
|
输出结果为:
1 |
|
4、left_shift
left_shift() 函数将数组元素的二进制形式向左移动到指定位置,右侧附加相等数量的 0。
实例:
1 |
|
输出结果为:
1 |
|
5、right_shift
right_shift() 函数将数组元素的二进制形式向右移动到指定位置,左侧附加相等数量的 0。
1 |
|
输出结果为:
1 |
|
Numpy 算术函数
1、介绍及函数明细
Numpy 算术函数–>算术函数顾名思义就是加、减、乘、除的意思,即add(),subtract(),multiply() 和 divide()等。 但值得注意的是数组必须具有相同的形状或符合数组广播规则。
NumPy 中涵盖的算术运算通过下表展示,除了基本的算术运算函数外,下表中还列出对应的指数和对数函数,详细信息如下:
方法 | 描述 |
---|---|
add() | 按元素添加参数 |
subtract() | 从元素方面减去参数 |
multiply() | 在元素方面乘以论证 |
divide() | 以元素方式返回输入的真正除法 |
logaddexp() | 输入的取幂之和的对数 |
logaddexp2() | base-2中输入的取幂之和的对数 |
true_divide() | 以元素方式返回输入的真正除法 |
floor_divide() | 返回小于或等于输入除法的最大整数 |
negative() | 数字否定, 元素方面 |
positive() | 数字正面, 元素方面 |
power() | 第一个数组元素从第二个数组提升到幂, 逐个元素 |
remainder() | 返回除法元素的余数 |
mod() | 返回除法元素的余数 |
fmod() | 返回除法的元素余数 |
divmod() | 同时返回逐元素的商和余数 |
absolute() | 逐个元素地计算绝对值 |
fabs() | 以元素方式计算绝对值 |
rint() | 将数组的元素舍入为最接近的整数 |
sign() | 返回数字符号的元素指示 |
heaviside() | 计算Heaviside阶跃函数 |
conj() | 以元素方式返回复共轭 |
conjugate() | 以元素方式返回复共轭 |
exp() | 计算输入数组中所有元素的指数 |
exp2() | 计算输入数组中所有 p 的 2**p |
log() | 自然对数, 元素方面 |
log2() | x的基数为2的对数 |
log10() | 以元素方式返回输入数组的基数10对数 |
expm1() | 计算数组中的所有元素吗,exp(x) - 1 |
log1p() | 返回一个加上输入数组的自然对数, 逐个元素 |
sqrt() | 以元素方式返回数组的非负平方根 |
square() | 返回输入的元素方块 |
cbrt() | 以元素方式返回数组的立方根 |
reciprocal() | 以元素方式返回参数的倒数 |
gcd() | 返回最大公约数 |
lcm() | 返回 最小公倍数 |
2、实例详解
2.1、add()
add() 表示两个数组相加,add() 函数使用方法如下:
add(数组1,数组2,…)
实例:
1 |
|
以上结果输出为:
1 |
|
由上可得结论,数组之间的相加维度、数据类型必须一致。
2.2、subtract()
subtract()表示两个数组相减,subtract() 函数使用方法如下:
subtract(数组1,数组2,…)
实例:
1 |
|
以上结果输出为:
1 |
|
2.3、multiply()
multiply() 表示两个数组相乘,multiply() 函数使用方法:multiply(数组1,数组2,…)
实例:
1 |
|
输出结果为:
1 |
|
2.4、divide()
divide() 表示两个数组相除,divide() 使用方法为:divide(数组1,数组2,…)
实例:
1 |
|
输出结果为:
1 |
|
2.5 log()
log() 函数是取数的对数 实例:
1 |
|
输出结果为:
1 |
|
2.6 numpy.power()
numpy.power() 函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂。
实例:
1 |
|
输出结果为:
1 |
|
总结
本章节是 NumPy 位运算和算术函数运用的基本介绍,这部分的知识实例都是从简单入手,对于一个知识点,难的是综合运用,只有根基牢固才能造出大 House,希望对使用这部分知识的工程师提供更好的支撑。
参考
https://www.runoob.com/numpy/numpy-arithmetic-operations.html https://www.numpy.org.cn/reference/ufuncs.html https://numpy.org/devdocs/reference/routines.math.html
文中示例代码:python-100-days