python – 在numpy数组中的索引,其中slice在另一个数组中
发布时间:2020-12-20 11:34:22 所属栏目:Python 来源:网络整理
导读:实际问题出现在某些机器学习应用程序中,数据有点复杂.所以这是一个能够捕捉问题本质的MWE: 我有两个阵列如下: L = np.arange(12).reshape(4,3)M = np.arange(12).reshape(6,2) 现在,我想在L中找到行R,这样在M中存在一些由R中除了最后一个元素之外的所有元
实际问题出现在某些机器学习应用程序中,数据有点复杂.所以这是一个能够捕捉问题本质的MWE:
我有两个阵列如下: L = np.arange(12).reshape(4,3) M = np.arange(12).reshape(6,2) 现在,我想在L中找到行R,这样在M中存在一些由R中除了最后一个元素之外的所有元素组成的行. 从上面的示例代码中,L和M看起来像这样: array([[ 0,1,2],# L [ 3,4,5],[ 6,7,8],[ 9,10,11]]) array([[ 0,1],# M [ 2,3],[ 4,7],[ 8,9],[10,11]]) 我想从这些,L中标记的行,作为一个numpy数组: array([[ 0,8]]) 如果我将L和M表示为python列表,我会这样做: L = [[0,[3,[6,[9,11]] M = [[0,[2,[4,[8,11]] answer = [R for R in L if R[:-1] in M] 现在,我知道我可以在numpy中使用类似的列表理解并将结果转换为数组,numpy就像它一样令人敬畏,可能有更优雅的方式来做我不知道的事情. 我试着查看np.where(获取所需的索引,然后我可以用它来接收L),但这似乎没有做我需要的. 我很感激任何帮助 解决方法>>> import hashlib >>> fn = lambda xs: hashlib.sha1(xs).hexdigest() >>> m = np.apply_along_axis(fn,M) >>> l = np.apply_along_axis(fn,L[:,:-1]) >>> L[np.in1d(l,m)] array([[0,8]]) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |