0

私の実際のデータには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'))

または他の便利な分割形式。

ただし、大規模なデータセットの場合、前者の方がメモリに優れています。この分割を行う方法についてのアイデアはありますか? ここで他の質問を見てきましたが、それらはすべて数値のテストです。

4

1 に答える 1