数组的动态循环
Dynamic Loops for Arrays
我想创建一个 TruthTable 生成器。所以如果我有一些 n 变量,我将有 2^n 行。每个语句仅包含零和一。
例如,考虑 A^B。 A 的可能值为 [0, 1],B 的可能值为 [0, 1]。我想为 A 和 B 应用 AND。我不想以常规循环方式进行处理,因为如果变量大于 2,我应该对每种可能性进行硬编码循环。
有什么numpy方法可以满足我的要求吗?我的意思是对两个数组的每个元素应用一个操作。
这应该适合你-
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-I 会说问题的标题并没有完全抓住你问题的本质
我想创建一个 TruthTable 生成器。所以如果我有一些 n 变量,我将有 2^n 行。每个语句仅包含零和一。
例如,考虑 A^B。 A 的可能值为 [0, 1],B 的可能值为 [0, 1]。我想为 A 和 B 应用 AND。我不想以常规循环方式进行处理,因为如果变量大于 2,我应该对每种可能性进行硬编码循环。
有什么numpy方法可以满足我的要求吗?我的意思是对两个数组的每个元素应用一个操作。
这应该适合你-
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-I 会说问题的标题并没有完全抓住你问题的本质