【发布时间】:2019-08-31 21:59:15
【问题描述】:
假设您有两个二维数组 A 和 B,并且您想检查 B 中包含 A 的行的位置。 你如何使用 numpy 最有效地做到这一点?
例如
a = np.array([[1,2,3],
[4,5,6],
[9,10,11]])
b = np.array([[4,5,6],
[4,3,2],
[1,2,3],
[4,8,9]])
map = [[0,2], [1,0]] # row 0 of a is at row index 2 of array B
我知道如何使用 in1d (test for membership in a 2d numpy array) 检查 A 的行是否在 B 中,但这不会产生索引映射。
此映射的目的是(最终)基于某些列将两个数组合并在一起。
当然可以逐行执行此操作,但这会变得非常低效,因为我的数组具有形状(50 Mio.,20)。
另一种方法是使用pandas merge function,但我想只使用numpy。
【问题讨论】:
-
数组中的数字是
ints吗?如果是这样,它们是积极的吗?如果有,它们是否有可能被限制的范围? -
不幸的是,它们是 float64 没有任何限制。
-
数组中是否存在重复项(相同的行)?
-
不,在我的情况下不是。
标签: python arrays pandas numpy merge