我的真实数据有大约 10000 多个项目。我有一个复杂的 numpy 记录数组,其格式大致如下:
a = (((1., 2., 3.), 4., 'metadata1'),
((1., 3., 5.), 5., 'metadata1'),
((1., 2., 4.), 5., 'metadata2'),
((1., 2., 5.), 5., 'metadata2'),
((1., 3., 8.), 5., 'metadata3'))
我的列由dtype = [('coords', '3f4'), ('values', 'f4'), ('meta', 'S10')]
. 我通过执行 set(a['meta']) 获得了所有可能的元值的列表。
我想根据“元”列将其拆分为更小的列表。理想情况下,我想要这样的结果:
a['metadata1'] == (((1., 2., 3.), 4.), ((1., 3., 5.), 5.))
a['metadata2'] == (((1., 2., 4.), 5.), ((1., 2., 5.), 5.))
a['metadata3'] == (((1., 3., 8.), 5.))
或者
a[0] = (((1., 2., 3.), 4., 'metadata1'), ((1., 3., 5.), 5., 'metadata1'))
a[1] = (((1., 2., 4.), 5., 'metadata2'), ((1., 2., 5.), 5., 'metadata2'))
a[2] = (((1., 3., 8.), 5., 'metadata3'))
或任何其他方便的拆分格式。
虽然,对于大型数据集,前者在内存上更好。关于如何进行这种拆分的任何想法?我在这里看到了其他一些问题,但它们都是在测试数值。