python - numpy:找到矩阵中满足相邻条件的所有数字对

标签 python numpy

假设你有一个矩阵:

import numpy as np
mat = np.array([[0, 0, 1], [2, 0, 1], [1, 0, 3]])

并且您想要检索此矩阵中彼此相邻、不相等且忽略零的所有数字对。在本例中,这将是 3 & 1 和 2 & 1,但我希望能够将其应用于非常大的矩阵。非常感谢任何帮助,谢谢!

最佳答案

这应该可以解决问题,尽管不可否认,这不是最优雅的;我在 1000x1000 随机整数矩阵上对其进行了测试,速度相当快(仅一秒多一点)。我不确定您如何看待输出,因此我将其放入名为 res 的列表中。

import numpy as np
# To test on larger array
mat = np.array(np.random.random_integers(0, 9, 1000 * 1000)).reshape(1000, 1000)
res = []

for a in mat:
    # Take out the zeros
    no_zeros = a[a!=0]
    if len(no_zeros) > 1:
        for i in range(len(no_zeros) - 1):
            # Only append pairs of non-equal neighbours
            if no_zeros[i] != no_zeros[i+1]:
                res.append((no_zeros[i], no_zeros[i+1]))

关于python - numpy:找到矩阵中满足相邻条件的所有数字对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48887896/

相关文章:

python - 应用函数数据框列

python - 为什么 numpy random.choice() 函数被停用了?

python - 在矩阵中查找匹配的子矩阵

python - BERT 和 ALBERT 的训练数据损失大且准确率低

python - 如何通过 USB 将数据从 Windows 发送到嵌入式 Linux

python - 合并重复的列 Pandas

python - 在列表中按行计算 NaN 值

python - 如何正确格式化 python 日志格式化程序?

python - 从字符串列表实例化两个 2D numpy 数组

python-3.x - 这个分配: understanding in-place assignment operations in numpy背后的逻辑是什么