python - 比较 NumPy 数组的两个(嵌套)列表/元组

标签 python arrays numpy tuples

假设我有两个以下类型的嵌套结构:

[(array, (array, array, array)), (array, (array, array, array))]

里面所有有趣的数据都是 NumPy 数组。比较两个这样的数据结构的最简单方法是什么?我可以分别对每个相应的数组进行索引和比较,但这需要大量的索引和输入。

如果有一种简单的方法可以“吞下”包含的数组中的所有数字并将它们明确地“序列化”到一个 NumPy 数组中,那么生成的数组将很容易进行比较。我主要感兴趣的是检查两个这样的数组是否相等(==np.allclose())。我曾经天真地尝试通过在整个事物周围抛出一个 np.array 来这样做,但这只会将最外层的列表转换为 NumPy 数组。

最佳答案

要使用 np.allclose,您需要自己的比较函数。

def compare(a, b):
    if isinstance(a, (list, tuple)) and isinstance(b, type(a)):
        for aa, bb in zip(a, b):
            if not compare(aa, bb):
                return False  # Short circuit
        return True
    else:  # numpy arrays
        return numpy.allclose(a, b)

当然,您可以更花哨(例如,将 kwargscompare 传递到 allclose)并且您的输入检查可能更多健壮,但这应该给你一般的想法......

关于python - 比较 NumPy 数组的两个(嵌套)列表/元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31662528/

相关文章:

python - bs4 - 根据其他值提取特定的 href

python - 使用子进程运行命令/程序

python - Pandas - 自动检测日期列**在运行时**

python - numpy 中的一些奇怪的东西

python - numpy ndarrays : row-wise and column-wise operations

python - 为什么在 Python 中使用 "SyntaxError: invalid syntax"时会得到 `match`?

php - 通过另一个键和值在多维数组中查找值

javascript - 通过新行(包括空行)将textarea中的文本拆分为javascript数组

javascript - Javascript 中的自定义 myParseInt() 函数

python - 来自 2d numpy 数组的加权随机采样