如何利用NumPy广播实现级数部分和计算,解决形状不匹配报错
问题原因
- 你的
a/b/c数组形状为(5,),时间序列t形状为(600,),两个不同长度的一维数组默认无法广播运算,因此触发维度不匹配报错。
解决方法
通过给长度为5的参数数组新增一个尾部维度,将其形状调整为(5, 1),即可和形状为(600,)的t自动广播为(5, 600)的二维数组,运算完成后沿第0维(项数维度)求和即可得到和原列表推导版本完全一致的结果。
可运行代码
import numpy as np a = np.array([0.4,2.6,3, 1.2, 3.4]) b = np.array([-5,7,2,1.1,1.8]) c = np.array([3.3,30,15,0.4,28]) t = np.linspace(0, np.pi, 600) def S(t): # [:, None]是[:, np.newaxis]的简写,作用为给数组新增尾部维度 return np.sum(a[:, None] * np.cos(b[:, None] * t + c[:, None]), axis=0)
内容的提问来源于stack exchange,提问作者Iyach tharwa nambarek
相关产品推荐
相关产品推荐

