gpt4 book ai didi

arrays - 消除不符合匹配条件的数组行

转载 作者:行者123 更新时间:2023-12-04 08:35:43 25 4
gpt4 key购买 nike

考虑一个由 组成的数组 M元素对 . (我使用空格来强调我们将处理元素 PAIRS)。实际的数组将有大量的行和 4、6、8 或 10 列。

import numpy as np

M = np.array([[1,3, 2,1, 4,2, 3,3],
[3,5, 6,9, 5,1, 3,4],
[1,3, 2,4, 3,4, 7,2],
[4,5, 1,2, 2,1, 2,3],
[6,4, 4,1, 6,1, 4,7],
[6,7, 7,6, 9,7, 6,2],
[5,3, 1,5, 3,3, 3,3]])
问题:我想从 M 中删除具有 的元素对的行没有共同元素与该行中的任何其他对。
在数组 M 中, 第二行 第四行应该被淘汰。原因如下:
第二行:对 (6,9) 与 (3,5)、(5,1) 或 (3,4) 没有共同元素
第四行:对 (4,5) 与 (1,2)、(2,1) 或 (2,3) 没有共同元素
我确信有一个不错的广播解决方案,但我看不到它。

最佳答案

这是一个广播解决方案。希望它是自我解释的:

a = M.reshape(M.shape[0],-1,2)

mask = ~np.eye(a.shape[1], dtype=bool)[...,None]

is_valid = (((a[...,None,:]==a[:,None,...])&mask).any(axis=(-1,-2))
|((a[...,None,:]==a[:,None,:,::-1])&mask).any(axis=(-1,-2))
).all(-1)

M[is_valid]
输出:
array([[1, 3, 2, 1, 4, 2, 3, 3],
[1, 3, 2, 4, 3, 4, 7, 2],
[6, 4, 4, 1, 6, 1, 4, 7],
[6, 7, 7, 6, 9, 7, 6, 2],
[5, 3, 1, 5, 3, 3, 3, 3]])

关于arrays - 消除不符合匹配条件的数组行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64813728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com