2

このコードをもっと簡単にする可能性があれば、本当にありがたいです!ゼロのある行を削除しようとしています。最初の列は日付です。他のすべての列がゼロの場合、それらを削除する必要があります。列の数は異なります。

import numpy as np

condition = [ np.any( list(x)[1:] ) for x in r]
r = np.extract( condition, r )

numpy.extractドキュメント

4

1 に答える 1

4

リスト内包表記を回避し、代わりに派手な索引付けを使用できます。

#!/usr/bin/env python
import numpy as np
import datetime
r=np.array([(datetime.date(2000,1,1),0,1),
            (datetime.date(2000,1,1),1,1),
            (datetime.date(2000,1,1),1,0),
            (datetime.date(2000,1,1),0,0),                        
            ])
r=r[r[:,1:].any(axis=1)]
print(r)
# [[2000-01-01 0 1]
#  [2000-01-01 1 1]
#  [2000-01-01 1 0]

rがndarrayの場合、r [:、1:]は最初の列が削除されたビューです。r [:、1:]。any(axis = 1)はブール配列であり、「ファンシーインデックス」として使用できます。

于 2009-10-16T18:25:03.773 に答える