如何解决如果 x 是熊猫系列,为什么点积 x@A 不起作用?
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。