Python 矢量乘以矢量,按标量-numpy

Python 矢量乘以矢量,按标量-numpy,python,pandas,numpy,Python,Pandas,Numpy,是否可以进行向量化计算,其中一个向量中的每一列都被视为标量 假设您有两个numpy阵列: a = np.array([(True, False), (True, True), (False, True), (True, False), (True, True), (False, True), (True, True)

是否可以进行向量化计算,其中一个向量中的每一列都被视为标量

假设您有两个numpy阵列:

a = np.array([(True, False),
              (True, True),
              (False, True),
              (True, False),
              (True, True),
              (False, True),
              (True, True)
             ])

b = np.array([[1, 3, 8, 3, 8, 3, 8],
              [4, 8, 6, 8, 6, 8, 6],
              [5, 9, 4, 9, 4, 9, 4],
              [6, 2, 3, 2, 3, 2, 3],
              [7, 4, 1, 4, 1, 4, 1],
              [8, 9, 9, 9, 9, 9, 9],
              [9, 1, 1, 1, 1, 1, 1]]) 
并希望将
a
的每一列乘以整个向量
b
求和
并将其作为
a
返回(或返回到
数据帧
)。这可以矢量化(没有for循环)吗


使用
矩阵乘法
-

df = pd.DataFrame(b.T.dot(a)) # or pd.DataFrame(a.T.dot(b).T)
使用
np.einsum
-

df = pd.DataFrame(np.einsum('ij,il->lj',a,b))

为什么numpy需要将其转置以检测点积?@啊,那么,我们遵循矩阵乘法的规则-?
df = pd.DataFrame(np.einsum('ij,il->lj',a,b))