python - Numpy 矩阵乘法,而不是乘以 XOR 的元素

标签 python algorithm numpy matrix

如标题中所述,我想进行一个计算,而不是将相应的元素相乘,而是对它们进行二进制异或,然后将它们相加。
举例说明:
Example for illustration:
编辑:上面的大图是计算,但我们开始了:从左侧 [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/

相关文章:

python - 如何添加数组(张量)列表

javascript - 将多个对象传递到数组中

numpy - xarray : mean of data stored via OPeNDAP

python - 在python中异步读取和处理图像

numpy - 安装错误 : ftheader. h:没有那个文件或目录

python - 生成器表达式中的多个产量? Python

python - 理解数据类型python

algorithm - Gc 使用类型信息

python - Pygame 俄罗斯方 block 问题

java - Shell 排序 Java 示例