python:导航4-D numpy数组

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

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

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)。标签存储在5个类别y_train的形状为(47204,)的单独[0..4]数组中。

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

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

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
...

我一直在思考如何在整个星期中做到这一点,所有想法都烟消云散了。请问我该怎么做?

python arrays numpy multidimensional-array
1个回答
2
投票

您可以简单地通过以下方法将X_train数组从(47204, 1, 100, 4)调整为(4720400, 4)

X_train_reshaped = X_train.reshape(4720400, 4)

它将保留数据顺序,并且元素总数将相同。

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

Y_train_reshaped = numpy.repeat(Y_train, 100)

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

© www.soinside.com 2019 - 2024. All rights reserved.