NumPy 按位或() 函数



NumPy 的bitwise_or()函数对两个数组或一个数组和一个标量执行逐元素按位或运算。如果输入操作数的对应位中至少有一个为 1,则输出的每个位都设置为 1。

数组必须具有相同的形状或可以广播到公共形状。此函数通常用于需要位级操作的场景,例如图像处理或二进制掩码。

结果是一个新数组,包含输入数组元素的按位或运算结果,其形状和数据类型与输入数组相同。以下是 1 和 0 的位组合的按位或运算结果:

  • 0 和 0 的按位或:0
  • 0 和 1 的按位或:1
  • 1 和 0 的按位或:1
  • 1 和 1 的按位或:1

语法

以下是 NumPy bitwise_or() 函数的语法:

numpy.bitwise_or(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
  • x1, x2(类似数组):用于计算这些数组的逐元素按位或运算的输入数组。
  • out(可选):这是保存结果的目录。如果给出,则其形状需要是输入广播到的形状。如果没有提供,则返回一个新分配的数组。
  • where(可选):此条件对输入进行广播。ufunc 结果将在条件为 True 的位置设置为 out 数组。如果不是,则将保留 out 数组的初始值。
  • casting(可选):此参数确定允许的数据类型转换。默认值为 'same_kind'
  • order(可选):控制结果的内存布局顺序。默认返回 'K'
  • dtype(可选):此参数覆盖结果的 dtype。
  • subok(可选):如果为 True,则子类将被传递。如果为 False,则结果将是基类数组。
  • signature(可选):此参数用于更高级的 ufunc 签名支持。

返回值

此函数返回包含按位或运算结果的数组。

示例 1

以下是 NumPy bitwise_or() 函数的基本示例,它显示了两个整数值的按位或运算:

import numpy as np

a, b = 13, 17
print('Binary equivalents of 13 and 17:')
print(bin(a), bin(b))

print('Bitwise OR of 13 and 17:')
print(np.bitwise_or(a, b))

其输出如下:

Binary equivalents of 13 and 17:
0b1101 0b10001
Bitwise OR of 13 and 17:
29

示例 2

在此示例中,我们使用bitwise_or()函数对两个数组执行逐元素按位或运算:

import numpy as np

# Define two NumPy arrays
arr1 = np.array([10, 20, 30])
arr2 = np.array([1, 2, 3])

# Perform the bitwise OR operation
result = np.bitwise_or(arr1, arr2)

# Print the result
print("Array 1:", arr1)
print("Array 2:", arr2)
print("Bitwise OR result:", result)

以下是对两个数组执行按位或运算的结果:

Array 1: [10 20 30]
Array 2: [1 2 3]
Bitwise OR result: [11 22 31]

示例 3

NumPy 中的广播允许通过将不同形状的数组对齐到公共形状来对这些数组进行逐元素运算。在此示例中,我们展示了按位或运算如何与广播一起工作:

import numpy as np

# Define the arrays
a = np.array([1, 2, 4])        # Shape: (3,)
b = np.array([[5, 6, 7]])      # Shape: (1, 3)

# Perform bitwise OR with broadcasting
result = np.bitwise_or(a, b)

print("Array a:", a)
print("Array b:", b)
print("Bitwise OR result:\n", result)

以下是上述示例的输出:

Array a: [1 2 4]
Array b: [[5 6 7]]
Bitwise OR result:
 [[5 6 7]]
numpy_binary_operators.htm
广告
© . All rights reserved.