私の実際のデータには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'))
または他の便利な分割形式。
ただし、大規模なデータセットの場合、前者の方がメモリに優れています。この分割を行う方法についてのアイデアはありますか? ここで他の質問を見てきましたが、それらはすべて数値のテストです。