如何使用NumPy将矩阵中的0和1替换为指定数组?
NumPy数组元素替换为多值数组的实现方案
针对你提出的将形状为(4800, 4, 4)的NumPy数组中每个0替换为[1, 1, 2]、每个1替换为[5, 5, 9]的需求,以下是两种高效的实现方法:
方法一:索引映射法(最简洁高效)
利用数组元素的取值(0和1)作为索引,直接从预定义的映射数组中取值,适合仅包含少量离散值的场景:
import numpy as np # 定义映射关系:索引0对应0的替换值,索引1对应1的替换值 mapping = np.array([[1, 1, 2], [5, 5, 9]]) # 直接通过原数组元素索引映射数组,自动广播得到目标形状(4800, 4, 4, 3) result = mapping[x]
方法二:np.where条件替换法
通过条件判断逐个元素替换,逻辑直观,适合需要更复杂条件判断的场景:
import numpy as np zero_replacement = np.array([1, 1, 2]) one_replacement = np.array([5, 5, 9]) # 扩展原数组维度至(4800, 4, 4, 1),与替换值的维度(3,)实现广播匹配 result = np.where(x[..., np.newaxis] == 0, zero_replacement, one_replacement)
两种方法最终都会生成形状为(4800, 4, 4, 3)的数组,完全符合你给出的示例输出格式。
内容的提问来源于stack exchange,提问作者MrBlackLord
相关产品推荐
相关产品推荐

