我有以下数组:
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行)中完成?
我想要的一个例子:给出下面的列表
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循环):
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)发布于 2021-10-27 15:55:52
使用的一种可能的方法是执行inner
pd.DataFrame(table).merge(pd.DataFrame(my_list))[[2, 3]].to_numpy()array([[5., 3.],
[5., 3.],
[7., 2.]])https://stackoverflow.com/questions/69741482
复制相似问题