2017-11-06 11 views
0

numpyの配列が次のようになっているとします: array([{'k': 1}, {'k': 2}, {'k': 3}]) 特定の条件を満たす要素だけをフィルタリングすることは可能ですか?たとえば、キーが1より大きい辞書のみを返します。lambdaのfilter()関数のようなものです。私はnumpy.where()を調べていましたが、正しい構文を理解できません。条件でnumpyの配列を検索する

答えて

1

だけ

a = [{'k': 1}, {'k': 2}, {'k': 3}] 
b = list(filter(lambda dic: dic['k'] > 1, a)) 

が働くだろう、ここでnumpyのに関連した特別なものは何もありません。

a = numpy.array([{'k': 1}, {'k': 2}, {'k': 3}]) 
b = numpy.array(list(filter(lambda dic: dic['k'] > 1, a))) 

も同様に機能します。

あなたの配列が一次元であり、要素を削除した場合、numpyの利点が得られないという点があります - Pythonのlistは完全に可能です。

(ここでは、Python3と仮定します)

+0

ありがとうございました。私はdictの代わりに別のデータ構造を使用しようとします。 –

+0

配列要素に常に固定キーセットがあることがわかっている場合は、単純に2次元配列ではないのはなぜですか? –

+0

それはまさに私が持っている実際の生活のケースではありませんが、私は多次元配列を使用します、ありがとう! –

関連する問題