首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从非常大的输入数组中获取引用数组中相应值的数组。

从非常大的输入数组中获取引用数组中相应值的数组。
EN

Stack Overflow用户
提问于 2021-10-27 15:30:49
回答 1查看 38关注 0票数 1

我有以下数组:

代码语言:javascript
复制
table = np.array([
[1.0, 1.0, 3.0, 5.0],
[1.0, 2.0, 5.0, 3.0],
...
[2.0, 5.0, 2.0, 1.0],
[8.0, 9.0, 7.0, 2.0]])

让我们用'a','b','m','n‘分别命名不同的列。

" table“是我的参考表,在这里我要提取'm‘和'n’,给出一个列表中包含的'a‘和'b’,我们称之为' my _ list‘。在这个列表中,我们允许重复对(a,b)。

N.B.:这里的列表可以称为数组(不是python意义上的)

--使用for循环更容易。但是,对于我的问题,我的列表'my_list‘可能包含超过100000对(a,b),所以使用for循环不是我工作的最佳选择。如何使用numpy函数或熊猫函数在几行(1至3行)中完成?

我想要的一个例子:给出下面的列表

代码语言:javascript
复制
my_list = np.array([
[1.0, 2.0],
[1.0, 2.0],
[8.0, 9.0]])

我希望得到以下结果:

代码语言:javascript
复制
results = np.array([
[5.0, 3.0],
[5.0, 3.0],
[7.0, 2.0]])

提前谢谢你

编辑1:与循环的等价性

下面是与for循环等价的方法(最简单的方法是不使用二分法搜索的for循环):

代码语言:javascript
复制
result = []
for x in my_list:
    for y in table:
        if (x[0] == y[0]) and (x[1] == y[1]):
            result.append([y[2], y[3]])
        break

print(results)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-27 15:55:52

使用的一种可能的方法是执行inner

代码语言:javascript
复制
pd.DataFrame(table).merge(pd.DataFrame(my_list))[[2, 3]].to_numpy()

代码语言:javascript
复制
array([[5., 3.],
       [5., 3.],
       [7., 2.]])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69741482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档