2016-10-24 10 views
0

boolean配列の条件に基づいてxyz座標の配列をスライスする必要があります(boolean配列が1Dの場合)。Pythonでboolean配列に基づいて配列をスライス

私のブール配列は

[1、0、0、0、0、1、1、0、0、1、1、0、0、0、1]

場合

私はそれが次の索引アレイを製造することをスライスする必要があります

[0、1、2、3、6、7、10、11、12]([-2]はTrueインデックス間)

最終的な所望の出力は、XYZの配列であろうが、これらの指標の座標:

[XYZ [0]、XYZ [1]、XYZ [2] XYZ [3]、XYZ [6] XYZ [ 7]、XYZ [10] XYZ [11]、XYZ [次のように12](同様の所望の出力を有する)

他の2つのスライスは、次のとおり

を[1、2、3、 4,7,8,11,12,13](真のインデックス間の[1:-1])

[2,3,4,5,8,12,13,14] 9,12,13,14](真のインデックス間の[2:])

リストの理解なしでこれを行うためのpythonic方法はありますか?

ありがとうございました!

+0

例えば、この "スライス" の結果がどうあるべきか'[0、1、2、3、6、7、10、11、12](真のインデックス間の[:-2] – Vader

+0

インデックスは出力です(私は思っています)。究極の目的は、それらのインデックスで関心のあるxyz座標を分離することです。わかりやすく質問を編集します – user2770149

+0

なぜリストの理解がないのですか?これはおそらく最も無作法な方法です –

答えて

0

何が必要ですnumpy.ndarray.nonzeroのように見えます:

a = np.asarray([1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1]) 
print(a.nonzero()) 

出力:

array([ 0, 5, 6, 9, 10, 14]) 
関連する問題