问题描述
x@A
返回错误 ValueError: matrices are not aligned
即使它们显然都满足点积乘法的要求,具有相同的外维 5。
而 x.values @ A
有效,返回预期的标量,仅仅因为 x
已从 Pandas 系列更改为 numpy
数组
为什么点符号 @
对熊猫如此挑剔?
解决方法
另外,DataFrame的列名和其他的索引必须 包含相同的值,因为它们将在 乘法。
所以错误不是关于维度而是关于不匹配的索引。请参见以下示例:
import pandas as pd
df = pd.DataFrame([[1,2],[3,4]],columns=list('ab'))
s = pd.Series([5,6])
# df @ s # --> doesn't work
print(df.values @ s) # --> works because no column names involved
print(df.rename({'a':0,'b':1},axis=1) @ s) # --> works because indices match
或者反过来
df = pd.DataFrame([[1,index=list('ab'))
s = pd.Series([5,6])
# s @ df # --> doesn't work
print(s @ df.values) # --> works because no column names involved
print(s @ df.reset_index(drop=True)) # --> works because indices match