【发布时间】:2021-12-12 21:52:46
【问题描述】:
我有以下数组:
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)。
注意:这里的列表可以称为数组(不是python意义上的)
使用 for 循环更容易做到这一点。但是,对于我的问题,我的列表 'my_list' 可以包含超过 100000 对(a,b),因此使用 for 循环对我的工作来说并不是最佳选择。 如何在几行(1 到 3 行)中使用 numpy 函数或 pandas 函数?
我想要的一个例子:给定以下列表
my_list = np.array([
[1.0, 2.0],
[1.0, 2.0],
[8.0, 9.0]])
我想得到以下结果:
results = np.array([
[5.0, 3.0],
[5.0, 3.0],
[7.0, 2.0]])
提前谢谢你
编辑 1:与 for 循环等价
这里是 for 循环的等价物(使用 for 循环的最简单方法,没有二分搜索):
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)
【问题讨论】:
-
在 for 循环中说明您的操作,因为我不清楚您的任务。
-
@sehan2 我刚穿上
标签: python pandas numpy filter