ブールinddex配列を使用して、numpyを使用せずにリストをフィルタリングするにはどうすればよいですか?
例えば:
>>> l = ['a','b','c']
>>> b = [True,False,False]
>>> l[b]
結果は次のようになります。
['a']
numpyがそれをサポートしていることは知っていますが、Pythonで解決する方法を知りたいです。
>>> import numpy as np
>>> l = np.array(['a','b','c'])
>>> b = np.array([True,False,False])
>>> l[b]
array(['a'],
dtype='|S1')
Pythonはブールインデックスをサポートしていませんが、itertools.compress
関数はまさにあなたが望むことをします。これはlist
、リストを返すためにコンストラクターを使用する必要があることを意味するイテレーターを返します。
>>> from itertools import compress
>>> l = ['a', 'b', 'c']
>>> b = [True, False, False]
>>> list(compress(l, b))
['a']
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加