Python 根据另一个索引数组重复numpy数组元素
我有以下占位符数组:Python 根据另一个索引数组重复numpy数组元素,python,arrays,numpy,Python,Arrays,Numpy,我有以下占位符数组: placeholder = np.zeros(10) A包含我要进入占位符的值 A = np.array([25, 40, 65,50]) idx具有占位符的索引。请注意,该占位符的形状与 问题: 我想用A的元素填充占位符。A中元素的重复量由idx数组的间隔长度定义 例如,25重复了5次,因为对应的索引范围是[0,5。65重复了两次,因为对应的索引范围是[6,8] 预期产出: np.array([25, 25, 25, 25, 25, 40, 65, 65, 50, 5
placeholder = np.zeros(10)
A包含我要进入占位符的值
A = np.array([25, 40, 65,50])
idx具有占位符的索引。请注意,该占位符的形状与
问题:
我想用A的元素填充占位符。A中元素的重复量由idx数组的间隔长度定义
例如,25重复了5次,因为对应的索引范围是[0,5。65重复了两次,因为对应的索引范围是[6,8]
预期产出:
np.array([25, 25, 25, 25, 25, 40, 65, 65, 50, 50])
使用np.diff+np.repeat快速简便:
使用np.diff+np.repeat快速简便:
如果要使用占位符数组:
placeholder = np.zeros(10)
如果要使用占位符数组:
placeholder = np.zeros(10)
这个解决方案是天外来客!不幸的是,我不得不接受另一个,因为它的可读性。这个解决方案是天外来客!不幸的是,我不得不接受另一个,因为它的可读性。
import numpy as np
placeholder = np.zeros(10)
A = np.array([25, 40, 65,50])
idx = np.array([0, 5, 6, 8])
placeholder[idx[0]] = A[0]
placeholder[idx[1:]] = np.diff(A)
np.cumsum(placeholder, out=placeholder)