如标题中所述,我想进行一个计算,而不是将相应的元素相乘,而是对它们进行二进制异或,然后将它们相加。
举例说明:
编辑:上面的大图是计算,但我们开始了:从左侧 [1 0 1] 取第一行,从顶部矩阵 [1 0 0] 取第一列。 1 XOR 1 = 0, 0 XOR 0 = 0, 1 XOR 0 = 1. 将它们全部相加 0 + 0 + 1 = 1. 从左数第一行 [1 0 1], 第二列 [0 0 0]: 1 XOR 0 = 1, 0 XOR 0 = 0, 1 XOR 0 = 1. 将它们全部相加 1 + 0 + 1 = 2. 依此类推
有可能在 numpy 中做到这一点吗?
最佳答案
尝试这个:
M1 = np.array([[1, 0, 0], [0, 0, 0], [0, 0, 0]])
M2 = np.array([[1, 0, 1], [0, 0, 1], [1, 1, 1]])
(M1 ^ M2[:,None]).sum(-1)
输出:array([[1, 2, 2],
[2, 1, 1],
[2, 3, 3]])
编辑 如果要预分配内存:
intermediary = np.empty((3,3,3), dtype=np.int32)
np.bitwise_xor(M1, M2[:,None], out=intermediary).sum(-1)
关于python - Numpy 矩阵乘法,而不是乘以 XOR 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67006518/