1

我有两个 2D numpy 数组形状:

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

在每种情况下,前 3 个字段形成一个标识符。

我想减少较大的矩阵,使其仅包含带有标识符的行,这些标识符也存在于第二个矩阵中。所以形状应该是(248L,12L)。我怎样才能做到这一点?

然后我想对其进行排序,以便数组由第一个值、第二个值和第三个值索引,以便 (3 3 4) 出现在 (3 3 5) 等之后。是否有多字段排序功能?

编辑:

我试过熊猫:

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()允许多个键。因此,将索引设置为前三列(使用drop=False, inplace=True),以避免不必要地改变或复制您的数据框。

然后,merge(...how='inner')与您的数据框相交。

一般来说,对于任意数据帧操作,numpy 很快就会失去动力。您的默认设置应该是尝试熊猫。性能也更高。

于 2015-03-16T14:52:29.660 回答