我想知道是否有一种避免使用for循环以减少计算时间的方式来利用python numpy数组广播。这是下面的最小示例:
import numpy as np
#
# parameters
n_t = 256
G = 0.5
k_n = 10
# typical data
tau = np.linspace(0,2*np.pi,256)
x_t = np.sin(tau).reshape((n_t,1))
x_t_dot = np.cos(tau).reshape((n_t,1))
#
delta = np.maximum(0,(x_t-G))
f_dot = np.zeros((n_t,1))
# current used for loop
for i in range(0,n_t,1):
# Boolean condition
if delta[i,0] > 0:
f_dot[i,0] = k_n
任何建议将不胜感激。谢谢。
最佳答案
您可以使用np.where
来根据条件的结果从k_n
或f_dot
分配值:
f_dot = np.where(delta > 0, k_n, f_dot)
关于python - bool 条件后的Numpy ndarray广播,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54815897/