Numpy left_shift() 函数
NumPy left_shift() 函数用于对数组元素执行按位左移运算。
当给定两个数组或一个数组和一个标量时,它会将第一个数组中每个元素的位向左移动第二个数组或标量中指定的位数。结果相当于将数组元素乘以 2**shift。
- 此函数允许对不同形状的数组进行操作,从而支持广播。它在低级数据操作(例如二进制编码、图像处理和需要精确位控制的操作)中非常有用。
- 在按位运算中,负移位值通常与右移运算一起使用,此时位向右移动。
- 在左移运算中,负值没有有意义的解释,其行为可能不一致或未定义。
语法
以下是 Numpy left_shift() 函数的语法 -
numpy.left_shift(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[,签名])
参数
以下是 Numpy left_shift() 函数的参数 -
- x1(array_like): 执行左移操作的输入数组。
- x2(array_like 或 int): x1 中每个元素左移的位数。可以是单个整数,也可以是与 x1 形状相同的数组。
- out(可选): 这是一个可选的输出数组,用于存储结果。
- where(可选): 用于确定在何处执行移位操作的条件。当条件为 True 时,计算结果。
- **kwargs: 参数 casting、order、dtype、subok 属于附加关键字参数。
返回值
该函数返回一个数组,其中每个元素都是对原始数组对应位左移的结果。
示例 1
以下是 Numpy left_shift() 函数的基本示例,其中对数组中的单个整数进行了移位 -
import numpy as np # 将整数 5 的位向左移动 1 位 result = np.left_shift(5, 1) print(result)
以下是输出left_shift() 函数 −
10
示例 2
我们可以对数组的所有元素进行统一的标量移位,方法是将每个元素的位向左移动指定的位数。在此示例中,我们将数组移位 3 位 -
import numpy as np # 定义一个整数数组 array = np.array([5, 10, 15, 20]) # 定义标量移位值 shift = 3 # 执行左移操作 result = np.left_shift(array, shift) print("原始数组:", array) print("移位后数组:", result)
以下是上述示例的输出 -
原始数组:[ 5 10 15 20] 移位后数组:[ 40 80 120 160]
示例 3
以下示例将数字 10 左移两位,并显示结果,包括原始值和移位值的二进制表示 -
import numpy as np print('将 10 左移两位:') print(np.left_shift(10, 2)) print('10 的二进制表示:') print(np.binary_repr(10, width=8)) print('40 的二进制表示:') print(np.binary_repr(40, width=8))
以下是上述示例的输出 -
将 10 左移两位: 40 10 的二进制表示: 00001010 40 的二进制表示: 00101000
示例 2
在此示例中,left_shift() 未以标准方式处理负移位,因此左移的结果可能与预期不符。相反,结果通常没有意义,并且可能默认为与本例相同的值 -
import numpy as np # 定义一个整数数组 array = np.array([16, 32, 64, 128]) # 定义移位值数组,包括负值 shifts = np.array([-1, -2, -3, -4]) # 执行左移操作 result = np.left_shift(array, shifts) print('原始数组:', array) print('移位值:', shifts) print('移位后数组:', result)
移位后的数组 -
原始数组:[ 16 32 64 128] 移位值:[-1 -2 -3 -4] 移位后的数组:[0 0 0 0]