python:导航4D numpy数组

2024-05-23 18:39:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个4-D阵列输入CNN网络。输入数组具有以下形状

print('X_train shape: ', X_train.shape)
X_train shape:  (47204, 1, 100, 4)

数据描述:

输入数据由47204个实例组成(根据CNN的要求固定长度的段)。每个实例(1, 100, 4)1段包含100-GPS points,并且对于每个点,4-对应点运动学(max_speed, avg_speed, max_acc, avg_acc)被存储,因此(1, 100, 4)。标签存储在一个单独的y_train数组中,数组的形状为(47204,),用于5个类[0..4]

print(y_train)
[3 3 0 ... 2 3 4]

为了更好地理解我的X_train数组,我在下面展示了前3个元素:

print(X_train[1:3])
[
 [[[ 3.82280987e+00 2.16802350e-01  7.49917451e-02  3.44416369e-04]
   [ 3.38707371e+00 2.02210055e-01  1.61751110e-03  1.93745950e-03]
   [ 2.49202215e+00 1.60605262e-01  8.43561351e-03  2.40057917e-03]
   ...
   [ 2.00022316e+00 2.70020923e-01  5.40441673e-02  3.57212151e-03]
   [ 3.25199744e-01 9.06990382e-02  1.46808316e-02  1.65841315e-03]
   [2.96587589e-01  0.00000000e+00  6.13293351e-04 4.16518187e-03]]]

 [[[ 1.07209176e+00 7.27038312e-02 6.62777026e-03  2.04611951e-04]
   [ 1.06194285e+00 5.05005456e-02 4.05676569e-03  3.72293433e-04]
   [ 1.02849748e+00 2.12558178e-02 2.95477005e-03  5.56584054e-04]
   ...
   [ 4.51962909e-03 5.63125736e-04 5.98474074e-04  1.63036715e-05]
   [ 2.83026181e-03 2.35855075e-03  1.25789358e-03 2.15331510e-06]
   [8.49078543e-03  2.16840434e-19 9.43423077e-04 1.29198906e-05]]]

 [[[ 7.51127665e+00 3.14033478e-01  6.85170617e-02  7.73415075e-04]
   [ 7.42307262e+00 1.33868251e-01  4.10564823e-02  1.16131460e-03]
   [ 7.35818066e+00  1.23886976e-02  3.02312582e-02  1.28312101e-03]
   ...
   [ 7.40826167e+00 1.19388656e-01 4.00874715e-02  2.04909489e-04]
   [ 7.23779176e+00 1.33269965e-01  1.20430502e-02  1.58195900e-04]
   [ 7.11697001e+00 4.68002105e-02  5.42478400e-02  3.58101318e-05]]]
]

任务:

我需要使用4运动学(max_speed, avg_speed, max_acc, avg_acc)作为特征创建机器学习模型(例如随机森林)。这需要导航每个实例,并为实例中的100个点获取这些功能

显然,样本的数量将是4720400(即47204 x 100),因此也将每个值与其实例的相应标签相匹配,即y_train将是(4720400,)

然后,预期的输入将如下所示:

      max_speed     avg_speed         max_acc       avg_acc   class
0 3.82280987e+00 2.16802350e-01  7.49917451e-02  3.44416369e-04 3
1 3.38707371e+00 2.02210055e-01  1.61751110e-03  1.93745950e-03 3
2 2.49202215e+00 1.60605262e-01  8.43561351e-03  2.40057917e-03 3
...

一周来我一直在思考如何做到这一点,所有的想法都烟消云散了。请问我该怎么做


Tags: 数据实例网络train标签数组cnnmax
1条回答
网友
1楼 · 发布于 2024-05-23 18:39:18

只需使用以下方法,即可将X_train数组从(47204, 1, 100, 4)重塑为(4720400, 4)

X_train_reshaped = X_train.reshape(4720400, 4)

它保留了数据顺序,元素总数将相同

类似地,可以使用repeat命令展开y_train数组:

Y_train_reshaped = numpy.repeat(Y_train, 100)

注意repeat命令的100。由于您有一个用于100个数据点的标签,我们将把这些项目扩展100倍。此命令还将保留数据顺序,以便所有实例都具有相同的原始标签

相关问题 更多 >