numpy.right_shift
numpy.right_shift(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj]) = <ufunc 'right_shift'>
向右移整数的位。
位向右移x2。 因为数字的内部表示是二进制格式,所以此操作等效于将x1除以2 ** x2
。
参数 : | x1 :array_like, int 输入值。 x2 :array_like, int x1右边要除去的位数。 如果 则必须将它们传递为通用shape(即输出的形状)。 out :ndarray, 和 结果存储的位置。 如果提供, 它必须具有输入传递到的shape。 如果未提供或没有,则返回一个新分配的数组。 元组(只能作为关键字参数) 的长度必须等于输出的数量。 where :array_like, 可选 这个条件在输入上传递。在条件为真的位置, out数组将被设置为ufunc结果。在其他地方, out数组将保留其原始值。 注意,如果通过默认 创建了一个未初始化的数组, 其中条件为False的位置将保持未初始化。 **kwargs 有关其他仅关键字的参数,请参见ufunc文档。 |
返回值 : | out :ndarray, 返回x1,位右移x2次。如果x1和x2都是标量, 这就是一个标量。 |
例如
1)基础用法(标量)
import numpy as np # 等价于 8 >> 2 print(np.right_shift(8, 2))
2)对数组应用
import numpy as np a = np.array([8, 16, 32]) b = np.array([1, 2, 3]) result = np.right_shift(a, b) print(result)
3)与布尔数组一起使用
import numpy as np a = np.array([4, 5], dtype=np.int32) b = np.array([1, 0], dtype=np.int32) print(np.right_shift(a, b))
4)广播行为
import numpy as np a = np.array([[16, 32], [64, 128]]) b = 2 print(np.right_shift(a, b))