You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并不同尺寸的布尔NumPy矩阵并保留所有True值?

解决方法

要合并两个不同尺寸的布尔NumPy矩阵、保留所有True值,按以下步骤操作即可:

  1. 确定目标矩阵尺寸:行数取两个矩阵的最大行数,列数取最大列数,确保能容纳两个矩阵的所有元素。
  2. 初始化全False矩阵:创建对应尺寸的全布尔False矩阵作为结果容器。
  3. 填充两个矩阵的True值:分别将两个矩阵的元素映射到结果矩阵的对应位置,用逻辑或操作确保所有True都被保留(避免后面的矩阵False覆盖前面的True)。

代码示例

import numpy as np

# 定义输入的两个布尔矩阵
mat1 = np.array([[True, False, False],
                 [True, False, False],
                 [True, False, False]])
mat2 = np.array([[True, True],
                 [False, False],
                 [False, False]])

# 计算目标矩阵的行数和列数
max_rows = max(mat1.shape[0], mat2.shape[0])
max_cols = max(mat1.shape[1], mat2.shape[1])

# 创建初始全为False的结果矩阵
result = np.full((max_rows, max_cols), False)

# 填充第一个矩阵的True值
result[:mat1.shape[0], :mat1.shape[1]] |= mat1
# 填充第二个矩阵的True值,逻辑或操作确保所有True都保留
result[:mat2.shape[0], :mat2.shape[1]] |= mat2

print(result)

运行后输出即为你需要的矩阵:

[[ True  True  True]
 [ True False False]
 [ True False False]]

补充说明

  • 用|=(逻辑或赋值)而非直接赋值,是为了适配更通用的场景——比如如果两个矩阵有重叠的True/False位置,能保证True不会被覆盖。
  • 切片操作会自动匹配原矩阵的行列范围,超出原矩阵的部分保持初始的False状态。

内容的提问来源于stack exchange,提问作者By1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:13:13