Я хотел бы знать, есть ли способ воспользоваться преимуществами трансляции массива python numpy, избегая использования цикла for, чтобы сократить время вычислений. Вот следующий минимальный пример:
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))
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
Любые предложения будут ценны. Спасибо.






numpy.where - это хороший способ, как указал @yatu. Для полноты можно также использовать логическое маскирование. На самом деле, есть много способов нарезать объект numpy.array!.
mask = delta>0
f_dot[mask] = k_n
Обратите внимание, что это также может быть сокращено до одной строки, если маска одноразовая: f_dot[delta>0] = k_n.
Спасибо также за этот совет, я нахожу ваш ответ действительно интуитивным!
Спасибо, это было именно то, что я искал!