我想知道是否有一种方法可以通过避免使用 for 循环来减少计算时间来利用 python numpy 数组广播。这是以下最小示例:import numpy as np# parametersn_t = 256G = 0.5k_n = 10# typical datatau = np.linspace(0,2*np.pi,256)x_t = np.sin(tau).reshape((n_t,1))delta = np.maximum(0,(x_t-G))f_dot = np.zeros((n_t,1))for i in range(0,n_t,1): # boolean condition if delta[i,0] > 0: f_dot[i,0] = k_n任何建议将不胜感激。谢谢。
2 回答

波斯汪
TA贡献1811条经验 获得超4个赞
numpy.where
正如@yatu 所指出的那样,这是一个很好的方法。为完整起见,逻辑屏蔽也是一种选择。其实切片numpy.array
对象的方法有很多种!.
mask = delta>0 f_dot[mask] = k_n
请注意,如果掩码是一次性的,这也可以减少到一行:f_dot[delta>0] = k_n
。
添加回答
举报
0/150
提交
取消