我可以帮助你翻译以下关于编程的内容:我有以下4个数组,我想获取与B和Y中相同位置的值对应的在A和X中相等的值的索引。因此,对于以下示例:
我想获得两个包含索引的数组:
这是我目前的尝试:
import numpy as np
A = np.asarray([400.5, 100, 700, 200, 15, 900])
B = np.asarray([500.5, 200, 500, 600.5, 8, 999])
X = np.asarray([400.5, 700, 100, 300, 15, 555, 900])
Y = np.asarray([500.5, 500,600.5, 100, 8, 555, 999])
我想获得两个包含索引的数组:
indAB = [0 2 4 5]
- 0,因为A&B中的400.5和500.5在X&Y中的位置0也存在
- 2,因为A&B中的700和500在X&Y中的位置2也存在
- 4,因为A&B中的15和8在X&Y中的位置4也存在
- 5,因为A&B中的900和999在X&Y中的位置5也存在
indXY = [0 1 4 6]
- 0、1、4和6与indAB相似,但是是相对于X&Y而言的。
这是我目前的尝试:
def indices(a,b):
setb = set(b)
ind = [i for i, x in enumerate(a) if x in setb]
return ind
iA = np.asarray(indices(A,X))
iB = np.asarray(indices(X,A))
iX = np.asarray(indices(B,Y))
iY = np.asarray(indices(Y,B))
def CommonIndices(a,b):
return np.asarray(list(set(a) & set(b)))
indAB = CommonIndices(iA,iX)
indXY = CommonIndices(iB,iY)
print(indAB) # returns = [0 2 4 5]
print(indXY) # returns = [0 1 2 4 6]
我一直得到[0 1 2 4 6]这个错误的indXY。2不应该被包括在内,因为即使600.5在Y和B中,A和B中的200和100(分别)也不相等。
如果有人能提供解决方案,我将非常感激。非常感谢!
npi
的。据我所知,我的答案与你的相关,但使用了原始的Python对象。 - Eric Duminil