1

私は2つの2D numpy配列の形をしています:

(19133L, 12L)
(248L, 6L)

いずれの場合も、最初の 3 つのフィールドが識別子を形成します。

2番目のマトリックスにも存在する識別子を持つ行のみが含まれるように、より大きなマトリックスを縮小したいと考えています。したがって、形状は(248L、12L)である必要があります。これどうやってするの?

次に、(3 3 4) が (3 3 5) の後に来るように、配列が最初の値、2 番目の値、3 番目の値でインデックス付けされるように並べ替えたいと思います。複数フィールドの並べ替え機能はありますか?

編集:

私はパンダを試しました:

df1 = DataFrame(arr1.astype(str))
df2 = DataFrame(arr2.astype(str))

df1.set_index([0,1,2])
df2.set_index([0,1,2])

out = merge(df1,df2,how="inner") 
print(out.shape)

しかし、これは (0,13) 形状になります

4

1 に答える 1

2

パンダを使用します。

pandas.set_index()は複数のキーを許可します。したがって、インデックスを最初の 3 つの列に設定して ( を使用drop=False, inplace=True)、データフレームを不必要に変更またはコピーしないようにします。

次に、merge(...how='inner')を使用してデータフレームを交差させます。

一般に、numpy は、任意のデータフレーム操作に対して非常に迅速に蒸気を使い果たします。あなたのデフォルトはパンダを試すことです。また、はるかにパフォーマンスが向上します。

于 2015-03-16T14:52:29.660 に答える