2017-11-21 5 views
0

私は二次元のnp配列V(100000x50)を持っています。 Vの特定の行を保持する新しい配列V_tgtを作成したいので、次元は(ix50)になります。それはやりやすいかもしれませんが、私は別のものを試しました、そして、それは50要素のうちの最初のものを保存するようです。私のコードは以下の通りです:二次元配列の行を別の配列に保存する

V_tgt = np.array([]) 
for i in IX_items: 
    if i in IX_tgt_items: 
     V_tgt=np.append(V_tgt, V[i]) 

私はそのようなインサートとして機能してみましたし、同様に削除しますが、それはwork.How私はすべての値を保存し、右の次元を持つ配列を作成することができませんでしたか?どんな助けでも本当に感謝しています。

私はあなたがこのような何か行うことができますV.から取るためにどの要素を示しています(私の例 tgt_idx1tgt_idx2で)ターゲット・インデックスのリストのいくつかの種類があると仮定し、あなたのコメントから
+0

Vとは何ですか? 'V_tgt = np.append(V_tgt、V [i])' –

+0

申し訳ありません、指定するのを忘れました。 Vは最初の配列で、寸法は100000x50です –

+0

MFRとは何ですか? –

答えて

0

import numpy as np 

V = np.array([[1,2,3], [4,5,6], [7,8,9], [10, 11, 12]]) 
tgt_idx1 = np.array([1, 2, 3]) 
tgt_idx2 = np.array([1, 3]) 


mask = [] 
for i, elem in enumerate(V): 
    inTargets = i in tgt_idx1 and i in tgt_idx2 
    mask.append(inTargets) 
print mask 

V_tgt = V[mask] 
print V_tgt 

この写真は

[False, True, False, True] 
[[ 4 5 6] 
[10 11 12]] 
0

最初に問題を単純化しましょう。初期arraya)付:

a = np.array([45, 29, 76, 23, 76, 98, 21, 63]) 

indexarrays

i1 = np.array([1, 3, 5, 7, 9]) 
i2 = np.array([0, 1, 2, 3, 4]) 

し、我々は両方のi1i2indexesであるaから要素を取得するために、単純なlist理解を使用することができます:

np.array([e for i, e in enumerate(a) if i in i1 and i in i2]) 

非常に読みやすい出力である:

array([29, 23]) 

私はあなたがあなたのarraysに与えているvariablesにこれを適応させることができます確信しています。

0

np.appendのパフォーマンスはおそらく、なぜサブセット、その後、あなたの2つの指標の新しい重複を作成しないで、これを殺している:

#using @Joe Iddons data 
a = np.array([45, 29, 76, 23, 76, 98, 21, 63]) 
i1 = np.array([1, 3, 5, 7, 9]) 
i2 = np.array([0, 1, 2, 3, 4]) 

そして、I1とI2の交差を見つける:

indices = np.intersect1d(i1,i2) 

サブセット:

a[indices] 
array([29, 23]) 
関連する問題