在numpy中的子列表中反转顺序

问题描述 投票:0回答:1

我有两个 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函数来做到这一点。

python list numpy reverse sublist
1个回答
1
投票

您可以通过在由 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]
© www.soinside.com 2019 - 2024. All rights reserved.