带复合键的Numpy数组;在两者中查找子集

2024-04-25 07:26:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个二维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)形状


Tags: numpydataframeindex排序情况矩阵数组标识符
1条回答
网友
1楼 · 发布于 2024-04-25 07:26:40

使用熊猫。你知道吗

pandas.set_index()允许多个键。因此,将索引设置为前三列(使用drop=False, inplace=True),以避免不必要地改变或复制数据帧。你知道吗

然后,merge(...how='inner')与数据帧相交。你知道吗

一般来说,对于任意的数据帧操作,numpy很快就会耗尽能量;您的默认操作应该是尝试pandas。性能也更高。你知道吗

相关问题 更多 >