根据另一个索引数组

时间:2018-02-19 08:42:28

标签: python arrays numpy

我有以下占位符数组:

placeholder = np.zeros(10)

A包含我想要进入占位符的值

A = np.array([25, 40, 65,50])

idx包含占位符的索引(请注意,其形状与A相同)

idx = np.array([0, 5, 6, 8])

问题:

我希望placeholder填充A的元素。 A中要重复的元素的数量由idx数组的间隔长度定义。

例如,25重复5次,因为相应的索引范围是[0,5]。 65重复两次,因为相应的指数范围是[6,8]

预期产出:

np.array([25, 25, 25, 25, 25, 40, 65, 65, 50, 50])

2 个答案:

答案 0 :(得分:3)

使用np.diff + np.repeat

,快捷方便
repeats = np.diff(np.append(idx, len(placeholder)))

A.repeat(repeats)
array([25, 25, 25, 25, 25, 40, 65, 65, 50, 50])

答案 1 :(得分:3)

如果您想使用placeholder数组:

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)