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

如何在Python中将同形状numpy数组2的非0值复制到数组1?

解决方法:利用NumPy布尔索引实现非0值替换

这事儿其实用NumPy的布尔索引就能轻松搞定,核心思路就是先找出数组2里所有非0元素的位置,再把这些位置的值覆盖到数组1对应的位置上。

直接上代码示例:

import numpy as np

# 定义原始数组
arr1 = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]])
arr2 = np.array([[0, 2, 0], [4, 0, 0], [6, 6, 0]])

# 生成布尔掩码:找出arr2中非0的位置
mask = arr2 != 0

# 用掩码把arr2的非0值赋值给arr1对应位置
arr1[mask] = arr2[mask]

# 输出结果
print(arr1)

运行这段代码后,你就能得到期望的结果:

[[1 2 1]
 [4 1 1]
 [6 6 1]]

补充说明:

  • 如果不想修改原始的arr1,可以先创建一个副本再操作,比如:
    arr1_copy = arr1.copy()
    arr1_copy[mask] = arr2[mask]
    
    这样原arr1会保持不变,修改的是副本。
  • 布尔索引是NumPy里非常高效的操作,比循环遍历数组快得多,尤其适合处理大规模数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:49:03