我有两个 numpy 数组:
Values = numpy.array([5, 6, 7, 8, 1, 2, 3, 14, 15, 16])
Lengths = numpy.array([4, 3, 3])
在 numpy 中反转子列表中的顺序以获得此结果的有效方法是什么?
[8, 7, 6, 5, 3, 2, 1, 16, 15, 14]
我尝试过
for
循环,但我相信应该有一种更有效的方法来使用numpy函数来做到这一点。
您可以通过在由 np.split
给出的所需索引处拆分数组(使用
np.cumsum(Lengths)
)来实现此目的,然后在每个反转后连接(使用 np.concatenate)它们。
import numpy as np
Values = np.array([5, 6, 7, 8, 1, 2, 3, 14, 15, 16])
Lengths = np.array([4, 3, 3])
res = np.concatenate([split[::-1] for split in np.split(Values, np.cumsum(Lengths))])
print(res)
输出:
[ 8 7 6 5 3 2 1 16 15 14]