You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Numpy广播乘法报错如何解决:DataFrame多列与单列相乘语法问题

问题解决方法

错误原因

报错核心是NumPy数组广播维度不匹配:你要相乘的两个数组形状分别为(11516015,4)(四列价格字段的二维数组)和(11516015,)(复权因子的一维数组),不符合NumPy广播规则,无法直接逐行对应相乘。

正确写法

推荐两种实现方式,均为矢量化运算,适配千万级数据量的性能要求:

方式1:Pandas原生运算(最简洁,无需额外处理维度)

直接使用Pandas的mul方法指定按行对齐运算即可:

df[['close', 'open', 'high', 'low']] = df[['close', 'open', 'high', 'low']].mul(df['adj_factor'], axis=0)

方式2:NumPy维度对齐实现

如果需要用NumPy实现,只需给复权因子的一维数组增加一个维度,让其形状变为(11516015, 1)即可符合广播规则:

import numpy as np
df[['close', 'open', 'high', 'low']] = df[['close', 'open', 'high', 'low']].to_numpy() * df['adj_factor'].to_numpy()[:, np.newaxis]

也可以用reshape方法实现同样的维度调整效果:

df[['close', 'open', 'high', 'low']] = df[['close', 'open', 'high', 'low']].to_numpy() * df['adj_factor'].to_numpy().reshape(-1, 1)

内容的提问来源于stack exchange,提问作者jaried

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 18:15:05