首页 > 解决方案 > 按出现顺序获取 numpy 数组索引

问题描述

我正在使用 train_test_split。我的训练集 X[] 是一个文件路径数组。然后我有另一个数组 y[],它由一个热编码标签组成。它们由数组行索引相关。所以如果我通过 X 它看起来像这样:

索引路径

4、数据\djip2\DJIP2.5844MHz.10MSPS.fc32.2016-07-01_000000000001.npy

20、数据\taigentank\USRP-2_420GHz-1MSps-1MHztaigentank1_000000000000.npy

2、数据\866_300_1\USRP-866_300MHz-1MSps-1MHz_lte_1_000000000002.npy

y[] 看起来像这样:

索引标签

4, 00000001

20, 00000010

2、01000000

然后将这些数组随机化后传递给批处理生成器。在批处理生成器中,我需要确保每个 X 数组值都可以映射回 ay[] 数组标签。

所以,我希望能够获得现在以随机顺序排列的 X 数组索引,例如:

2、路径

4、路径

20、路径

并按此顺序将它们传递给另一个函数。我需要索引,因为我需要传递路径及其相关标签。有没有一种简单的方法可以用 numpy 做到这一点?

标签: pythonnumpy

解决方案


一种解决方案可能是:

n = range(numberOfInstances)

它创建一个整数列表,如 [0,1,2,3,4...numberOfInstances-1]。然后随机播放列表

random.shuffle(n)

将此列表保存为 numpy 数组

n_np = np.array(n)

最后相应地重新排序您的数据和groundtruth,例如

y = y[n_np]
x = x[n_np]

这应该以相同的方式重新排序两个数组。

我希望这会有所帮助:)!我有点困惑,为什么你有一个无序的 ID 序列,不知何故又被打乱了......


推荐阅读