gpt4 book ai didi

python - 在 2D numpy 数组中查找和删除回文行

转载 作者:行者123 更新时间:2023-12-02 16:12:09 25 4
gpt4 key购买 nike

从矩阵中查找/删除回文行的 pythonic 和有效方法是什么。虽然标题建议矩阵是一个 numpy ndarray,但如果它导致更优雅的解决方案,它可以是 pandas DataFrame

显而易见的方法是使用 for 循环来实现它,但我感兴趣的是是否有更有效和简洁的方法。

我的第一个想法是连接行和逆行,然后从连接矩阵中提取重复项。但是这个重复项列表将包含初始行及其逆行。因此,要删除回文的第二个实例,我仍然需要进行一些 for 循环。

我的第二个想法是以某种方式使用广播来获取行的笛卡尔积并应用我自己的 ufunc(可能是使用 numba 创建的)来获取 2D bool 矩阵。但我不知道如何创建将获得矩阵轴而不是标量的 ufunc。

编辑:

我想我应该为表述不当的问题道歉(英语不是我的母语)。我不需要查明是否有任何行本身是回文,但如果矩阵中有成对的行是回文。

最佳答案

我只是检查数组是否等于它在所有元素中的反射(围绕轴 1),如果为真,则它是回文(如果我错了请纠正我)。然后我索引出不是回文的行。

import numpy as np

a = np.array([
[1,0,0,1], # Palindrome
[0,2,2,0], # Palindrome
[1,2,3,4],
[0,1,4,0],
])

wherepalindrome = (a == a[:,::-1]).all(1)
print(a[~wherepalindrome])
#[[1 2 3 4]
# [0 1 4 0]]

关于python - 在 2D numpy 数组中查找和删除回文行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67702694/

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