数据:
我有一个大小为(2200, 1000, 12)的数组。第一个值(2200)是索引,每个索引中有1000条记录。
我还有一个大小为(2200)的类别数组。这里的每个变量代表每个索引中1000条记录的标签。
我想做到的是:
如何将第一个数组中的所有内容组合起来,从3维转换为2维?
以及如何将每个类别变量添加到1000条记录中?
期望的结果:
数据框大小(2200000,13)
2200000将是2200个索引中1000条记录的总和。第13列将是与类别的连接,其中每个类别的变量将重复一千次以保持相同的行数。
回答:
首先让我们导入必要的模块并生成模拟数据:
import numpy as npimport pandas as pdM = 2200N = 1000P = 12data = np.random.rand(M, N, P)classes = np.arange(M)
如何从3维转换为2维?
data.reshape(M*N, P)
如何将每个类别变量添加到1000条记录中?
np.repeat(classes, N)
期望的结果:数据框大小(2200000,13)
arr = np.hstack([data.reshape(M*N, P), np.repeat(classes, N)[:, None]])df = pd.DataFrame(arr)print(df)
上面的代码输出结果为:
0 0.371495 0.598211 0.038224 ... 0.777405 0.193472 0.01 0.356371 0.636690 0.841467 ... 0.403570 0.330145 0.02 0.793879 0.008617 0.701122 ... 0.021139 0.514559 0.03 0.318618 0.798823 0.844345 ... 0.931606 0.467469 0.04 0.307109 0.076505 0.865164 ... 0.809495 0.914563 0.0... ... ... ... ... ... ... ...2199995 0.215133 0.239560 0.477092 ... 0.050997 0.727986 2199.02199996 0.249206 0.881694 0.985973 ... 0.897410 0.564516 2199.02199997 0.378455 0.697581 0.016306 ... 0.985966 0.638413 2199.02199998 0.233829 0.158274 0.478611 ... 0.825343 0.215944 2199.02199999 0.351320 0.980258 0.677298 ... 0.791046 0.736788 2199.0