別の整数リスト(またはNumpy配列)に1の要素のインデックスを含むPythonリストを作成しようとしています。これはまた、別の配列にある値の位置を含むインデックス配列を作成する
#--- 1D case ---
idx = [ i for i in range(len(A)) if A[ i ] == 1 ]
#--- 2D case ---
idx2 = []
for i in range(len(B)):
tmp = [ k for k in range(len(B[ i ])) if B[ i ][ k ] == 1 ]
idx2.append(tmp)
ように、よりコンパクトに記述することができる
#--- 1D case ---
A = [ 1, 0, 0, 1, 1 ]
idx = []
for i in range(len(A)):
if A[ i ] == 1 : idx.append(i)
print(idx) # [ 0, 3, 4 ]
#--- 2D case ---
B = [ [ 1, 0, 0, 1, 1 ], [ 0, 1, 1 ] ]
idx2 = [ [] for i in range(len(B)) ]
for i in range(len(B)):
for j in range(len(B[ i ])):
if B[ i ][ j ] == 1 : idx2[ i ].append(j)
print(idx2) #[ [0,3,4], [1,2] ]
しかしがある場合、私は疑問に思って:私は何をしようとしていることは、(1-または2次元の場合のいずれかのために)このようなものです同じ目的のために使用できるさらにコンパクトな方法(または組み込み関数)です。純粋なPython、Numpy、または他の場所に便利な機能がありますか?
私responceでの更新を見て一つをチェックサブリストの長さが等しくない場合のより多くの解決策 – Luchko
@Luchko更新のおかげで、後ほど詳しく検討します。私が作成しているインデックス配列は、いくつかのクラスター分析のためのものです。そのサイズは先験的ではありませんので、私はPythonリストを使用しました。しかし、Numpy配列を索引付けに使用することもできます(リストを変換する - >配列)ので問題ありません。ありがとう:) – septc