加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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]])

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读