2017-01-01 15 views
-1

私は8列のPythonで2D行列を持っています。 これらの8つの列は、それぞれが4つの列を持つ2つの異なるエンティティ、たとえばAとBのレコードを保持します。に基づいて、エンティティAの属性を合わせ、シンプルな言葉でnumpy行列データセットの変換

╔══════╦═════════╦══════╦═════════╗ 
║ A_ID ║ arrtibA ║ B_ID ║ attribB ║ 
╠══════╬═════════╬══════╬═════════╣ 
║ 1 ║ val  ║ 1 ║ val  ║ 
║ 1 ║ val  ║ 1 ║ val  ║ 
║ 2 ║ val  ║ 2 ║ val  ║ 
║ 2 ║ val  ║ 2 ║ val  ║ 
║ 3 ║ val  ║ 3 ║ val  ║ 
╚══════╩═════════╩══════╩═════════╝ 

、およびエンティティB:私の例のデータは、次のようになります。

╔══════╦═════════╦══════╦═════════╗ 
║ A_ID ║ arrtibA ║ B_ID ║ attribB ║ 
╠══════╬═════════╬══════╬═════════╣ 
║ 1 ║ val  ║ 1 ║ val  ║ 
║ 1 ║ val  ║ 1 ║ val  ║ 
║ 1 ║ val  ║ 2 ║ val  ║ 
║ 1 ║ val  ║ 2 ║ val  ║ 
║ 2 ║ val  ║ 3 ║ val  ║ 
║ 2 ║ val  ║ 3 ║ val  ║ 
║ 2 ║ val  ║ 4 ║ val  ║ 
║ 3 ║ val  ║ 5 ║ val  ║ 
║ 3 ║ val  ║ 5 ║ val  ║ 
╚══════╩═════════╩══════╩═════════╝ 

そして、私がこの形式に変換したいですそれぞれのID。一致するものが見つからない行は破棄できます。私は約28,000以上の行を持っています.A_IDの範囲は17〜230、B_IDの範囲は17〜305です。しかし、一度整列が行われると、両方のエンティティのIDが231未満の行は、エンティティBの231〜305は破棄されます。

+0

。 'pandas'にはDataframesがあります。 Numpyには配列しかありません。私はMCVの例である – hpaulj

答えて

0

あなたは試すことができます:あなたは専門用語を混合している

data = np.delete(data, np.where(data[:,0]!=data[:,2])[0], 0) 
+0

を提案したいと思います。この例では、上の2行しか保持しないで残りを削除します。私はそれらを揃える必要があります –

+0

あなたの質問を完全に理解していないかもしれませんが、「それぞれのIDに基づいてエンティティAとエンティティBの属性を調整する」という意味はどうですか?あなたの例では、A_ID == 1と2行、B_ID == 1の4行があるので、A_ID == 1の最初の2行だけを残し、1列目と2列目の2エントリを削除します。セル(3,4)と(4,4)(ので、列1と2 'スライドアップ')とID == 2、3、4で繰り返す...? – Hugo

+0

はい、それはかなりです。 A_ID == 1の2つのエントリだけが削除され、A_ID == 2の下位の値は、B_ID == 2のエントリの前に3、4、5などのように "スライドアップ"されます。 –

関連する問題