【发布时间】:2019-06-05 09:38:20
【问题描述】:
假设我有以下数据框:
df_raw = pd.DataFrame({"person_id": [101, 101, 102, 102, 102, 103], "date": [0, 5, 0, 7, 11, 0], "val1": [99, 11, 22, 33, 44, 22], "val2": [77, 88, 22, 66, 55, 33]})
我想要实现的是创建一个 3 维 numpy 数组,结果应该如下:
np_pros = np.array([[[0, 99, 77], [5, 11, 88]], [[0, 22, 22], [7, 33, 66], [11, 44, 55]], [[0, 22, 33]]])
换句话说,3D 数组应具有以下形状[unique_ids, None, feature_size]。在我的例子中,unique_ids 的数量为 3,feature size 为 3(除person_id 之外的所有列),y 列的长度可变,它表示@987654328 的测量次数@。
我很清楚我可以创建一个np.zeros((unique_ids, max_num_features, feature_size)) 数组,填充它,然后删除我不需要但我想要更快的元素。原因是我的实际数据框很大(大约 [50000, 455]),这将导致一个大约 [12500, 200, 455] 的 numpy 数组。
期待您的回答!
【问题讨论】:
-
我不认为你可以创建一个这样的数组,每个内部数组都有不同的大小,组大小。但是,您可以有一个列表。
-
@DanielMesejo 那么你有什么建议?在内存和复杂性方面什么是最佳的?
-
之后你想做什么?
-
这是个好问题。获得序列后,我想使用 Tensorflow 执行分桶以动态填充序列。
-
这就是为什么我严格希望最终得到一个可变长度数组(之后在批处理中填充)。
标签: python pandas numpy numpy-ndarray