gpt4 book ai didi

python - 具有复合键的 Numpy 数组;找到两者的子集

转载 作者:行者123 更新时间:2023-12-01 04:47:44 25 4
gpt4 key购买 nike

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

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

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

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

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

编辑:

我尝试过 Pandas :

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) 形状

最佳答案

使用pandas

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

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

一般来说,numpy 对于任意数据帧操作很快就会失去动力;你的默认做法应该是尝试 pandas。性能也更高。

关于python - 具有复合键的 Numpy 数组;找到两者的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29079535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com