Python Numpy按规则对合并后数组应用乘数并修改的实现方法
实现方案
有两种常用实现方式,你可以根据实际场景选择:
方案1:直接修改已有的a_and_b数组
因为a_and_b是a、b元素交叉拼接生成的,a的元素全部位于数组的偶数索引位(0、2、4、6……),b的元素全部位于奇数索引位(1、3、5、7……),直接按索引切片赋值即可:
import numpy as np a_multiplier = 3 b_multiplier = 5 a = np.array([5,32,1,4]) b = np.array([1,5,11,3]) a_and_b = np.array([5,1,32,5,1,11,4,3]) # 偶数位元素对应a的原始值,乘对应系数 a_and_b[::2] *= a_multiplier # 奇数位元素对应b的原始值,乘对应系数 a_and_b[1::2] *= b_multiplier print(a_and_b)
运行后输出为:[15 5 96 25 3 55 12 15],和预期结果一致。
方案2:先缩放原数组再交叉拼接
如果你还没有生成a_and_b,这个方案逻辑更清晰,不容易出错:
import numpy as np a_multiplier = 3 b_multiplier = 5 a = np.array([5,32,1,4]) b = np.array([1,5,11,3]) # 先对两个原数组做系数缩放 a_scaled = a * a_multiplier b_scaled = b * b_multiplier # 交叉拼接生成结果数组 a_and_b = np.column_stack((a_scaled, b_scaled)).flatten() print(a_and_b)
运行后输出和方案1完全一致。
内容的提问来源于stack exchange,提问作者georgehere
相关产品推荐
相关产品推荐

