我有两个大小为(12550,10)
和ar1 = [[1,2,3,4],[4,5,6,7],[1,3,4,5],[6,7,8,5]]
ar2 = [[1,3],[4,6],[1,4],[6,8]]
的2d numpy数组。我需要找到与第二个数组列匹配的第一个数组的列索引集。
例如:
1,4,1,4
所以匹配的列是3,6,4,8
和 var index = 0;
Facebookcontexts.forEach(function(value) {
console.log(value.From);
if (value.From == sender_psid) {
FacebookContext.context = value.FacebookContext;
console.log("Inside foreach "+JSON.stringify(FacebookContext.context));
contextIndex = index;
}
index = index + 1;
});
我需要ar1中这些列的索引作为输出,即[0,2]
任何人都可以帮助我使用速度足够快的python代码,因为原始数组维度很大
答案 0 :(得分:0)
检查出来:
ar1 = np.array([[1,2,3,4],[4,5,6,7],[1,3,4,5],[6,7,8,5]])
ar2 = np.array([[1,3],[4,6],[1,4],[6,8]])
np.where((ar1[:,None].T == ar2.T).all(axis=2))[0]
给出
array([0, 2], dtype=int64)
意味着ar2的第0列在ar1的第0列中找到,第2列的第1列在ar1的第2列中找到。
使用转置因为您关心的是列而不是行。 [:,None]
用于广播(即每隔一列测试一次)。 all()
检查整个列是否匹配。最后,[0]
结果的np.where
元素将为您提供ar1列索引。