我想创建一个TruthTable生成器。因此,如果我有一些n个变量,我将有2^n行。每个语句只包含0和1。
例如,考虑A^B。A的可能值是[0,1],B的可能值也是[0,1]。我想对A和B应用AND。我不想以例程循环的方式应用,因为如果变量大于2,我应该对所有可能的循环进行硬编码。
有什么办法满足我的要求吗?我的意思是对两个数组的每个元素应用一个运算。
这应该适用于您-
import numpy as np
# the resulting table need not be square
A = np.array([[0, 1]])
B = np.array([[0, 1, 1]])
# repeat B 'row' times
rows = A.shape[1]
B = np.tile(B, (rows, 1))
# transpose A to columns and perform element wise logical and operation
print A.T & B
print (A.T & B) != 0
输出
[[0 0 0]
[0 1 1]]
[[False False False]
[False True True]]
ps-我想说的是,问题的标题并没有完全抓住你的问题的本质