Jupyter Notebook中用np.dot计算矩阵点积提示matrices are not aligned错误
错误原因与修复方案
核心报错原因
- pandas DataFrame执行
dot点积运算时会自动对齐列名与索引,你定义的两个DataFrame列名存在拼写不一致问题:weekly_sales列名:Almond Butter、Peanut Butterbutter_prices列名:Almond Butter(多了一个空格)、Peanut_Butter(用下划线代替了空格)
列名无法匹配,触发维度对齐错误。
- 本次你要计算每日总销售额的场景下,维度调整逻辑本身是正确的,只要修正列名即可正常运行。
修复后可运行代码
import numpy as np import pandas as pd # 创建随机销量数组 np.random.seed(0) sales_amounts = np.random.randint(20 , size=(5,3)) # 创建周销量DataFrame weekly_sales = pd.DataFrame(sales_amounts, index =["Mon","Tues","Wed","Thur","Fri"], columns =["Almond Butter","Peanut Butter","Cashew Butter"]) # 创建价格数组 prices = np.array([10,8,12]) # 创建价格DataFrame,和周销量的列名完全保持一致 butter_prices = pd.DataFrame(prices.reshape(1,3), index=["price"],columns= ["Almond Butter","Peanut Butter","Cashew Butter"]) # 计算每日总销售额,此时列名匹配、(1,3) × (3,5)的维度符合点积要求 daily_sales = butter_prices.dot(weekly_sales.T) print(daily_sales)
运行结果说明
修正后输出的daily_sales是1行5列的DataFrame,每一列对应周一到周五的三类黄油总销售额。
内容的提问来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

